2017-01-10 2 views
5

В ответ Дэниела с этого поста: What are Scala context and view bounds?Строка рассматривается как последовательность

представлен способ обработки строку как Scala Collection.

Обработка строк и массивов, которые являются Java-классами, такими как Scala> collections. Например:

Защиту F [CC <% Traversable [_]] (а: CC, B: CC): CC = если (a.size < B.Size) а еще б

Я хотел бы знать, где я могу найти эту функциональность в стандартных библиотеках Scala.

Еще один простой вопрос, связанный с постом выше:

Я продолжаю видеть стенографии «ЭВ» используется, особенно когда это связанно с контекстными границами или зрения ограничивающей примеры:

четкость г [A] (a: A) (неявный ev: B [A]) = h (a)

Что это значит?

Заранее спасибо. Приветствия

+0

* Я хотел бы знать, могу ли я найти эту функциональность в стандартных библиотеках Scala. * Вы говорите о том, где 'String' рассматривается как коллекция Scala? –

+0

yeap, в любом случае я вижу, что вы уже ответили, большое спасибо за подробное объяснение и быстроту! – Adrian

ответ

4

Я хотел бы знать, были, я могу найти эту функциональность в стандартных библиотеках Scala .

Scala предоставляет обертку вокруг java.lang.String под названием WrappedString:

final class WrappedString(val self: String) extends AbstractSeq[Char] 
              with IndexedSeq[Char] 
              with StringLike[WrappedString] 

При запуске:

f("he", "hello") 

компилятор неявно преобразует строковый литерал к экземпляру WrappedString через Predef.wrapString:

f[String]("he", "hello")({ 
    ((s: String) => scala.this.Predef.wrapString(s)) 
}); 

В свою очередь, WrappedString расширяет IndexedSeq[Char], и именно поэтому он подчиняется запросу ограничений на просмотр, чтобы быть конвертируемым в обход.

Я продолжаю видеть стенографии «ЭВ» используется, особенно когда это связано с контекста границ или просмотра границ, что это означает?

Это сокращение от «доказательств». Если вы думаете об этом, когда вы запрашиваете какой-то неявный параметр, который должен быть в области видимости, компилятор требует предоставить вам доказательства того, что операция может произойти.