Ответ 1
scala> import util.Properties
import util.Properties
scala> Properties.lineSeparator
res14: java.lang.String =
"
"
Я помню на Java, мы делаем это так:
System.getProperty("line.separator")
Как сделать то же самое в scala? Есть ли лучший (более простой) способ?
scala> import util.Properties
import util.Properties
scala> Properties.lineSeparator
res14: java.lang.String =
"
"
Оба scala.util.Properties.lineSeparator
и System.lineSeparator
будут выполнять ту же работу.
System.lineSeparator
будет напрямую вызывать метод Java, который должен найти свойство в системных реквизитах:
lineSeparator = props.getProperty("line.separator");
Вот результат:
scala> System.lineSeparator
res0: String =
"
"
Он возвращается к реквизитам Java по умолчанию, если их не найдено.
Аналогично, Properties.lineSeparator
будет вызывать:
def lineSeparator = propOrElse("line.separator", "\n")
который в итоге вызывает:
System.getProperty(name, alt)
Результат тот же:
scala> scala.util.Properties.lineSeparator
res2: String =
"
"
Таким образом, они оба получают разделитель строк из реквизитов Java. Единственное различие заключается в том, как они получают дефолты. Я не знаю, почему это реализовано именно так:). Это похоже на то, что они не доверяют, что Java будет иметь правильное значение по умолчанию в этом случае.