Я боролся с этой же проблемой, и этот ответ помог мне. Я хотел бы расширить комментарий seh относительно «почему это работает». Ответ должен лежать на подписи метода:
def fromFile(file: JFile)(implicit codec: Codec): BufferedSource
Требуется параметр кодека импликта. Тем не менее, в примере указана строка, а не кодек. Второй перевод происходит за кулисами:
Сопутствующий объект класса Codec определяет метод apply из String:
def apply(encoding: String): Codec
так что компилятор сделал для нас некоторую работу:
val lines = Source.fromFile (someFile) (Кодек ("UTF-8"))
Учитывая, что кодек неявный, если вы вызываете этот метод несколько раз, вы также можете создать объект кодека в области своего вызова:
implicit val codec = Codec("UTF-8")
val lines = Source.fromFile(someFile)
val moreLines = Source.fromFile(someOtherFile)
Надеюсь, я понял это правильно (я все еще Scala n00b, но я могу справиться с этим, если нужно)