Я видел, что Scala использует обоих попеременно, но я не знаю, когда использовать один или другой.
Существует ли конвенция?
Например, они эквивалентны
"hello" toString
и
"hello".toString()
И они могут даже быть смешаны
"hello".toString() length
Какова конвенция?
В развитие комментария Yardena, существует неофициальное руководство по стилю Scala. В нем есть несколько предложений о том, когда использовать точечную нотацию, а когда отказаться от точки и скобки, и обычно приводится краткое обоснование рекомендации, с которым вы можете согласиться или не согласиться, но, по крайней мере, это отправная точка.
Например, name toList
может вести себя по-разному в зависимости от того, что находится в следующей строке.
Лично я написал бы hello.toString.length
с предположением, что все вызовы не имеют побочных эффектов (поэтому я опускаю скобки), а затем я должен сохранить точку для компиляции.
Условное обозначение пробелов обычно используется, когда метод работает как оператор ( +
, *
и т. Д.); точечное соглашение используется, когда оно больше похоже на вызов метода.
(Я знаю, что объяснение довольно расплывчатое, но на самом деле нет жесткого и быстрого правила для использования.)