Когда использовать "" (пробел) и когда использовать. (точка) при вызове методов в Scala? - PullRequest
28 голосов
/ 03 августа 2010

Я видел, как Scala взаимозаменяемо использовал оба, но я не знаю, когда использовать один или другой.

Есть ли соглашение?

Например, они эквивалентны

"hello" toString 

и

"hello".toString()

И они даже могут быть смешаны

"hello".toString() length 

Что такое соглашение?

Ответы [ 2 ]

10 голосов
/ 03 августа 2010

Соглашение о пробелах обычно используется, когда метод функционирует как оператор (+, * и т. Д.); соглашение о точках используется, когда оно больше похоже на вызов метода.

(Я знаю, что объяснение довольно расплывчато, но на самом деле не существует жесткого и быстрого правила для использования.)

7 голосов
/ 04 августа 2010

Чтобы расширить комментарий от Yardena, есть неофициальное руководство по стилю Scala . В нем содержатся некоторые предложения о том, когда использовать точечную нотацию, а когда отбрасывать точку и круглые скобки, и, как правило, приводится краткое обоснование рекомендации, с которой вы можете согласиться или не согласиться, но по крайней мере это отправная точка.

Например, name toList может вести себя по-разному в зависимости от того, что находится на следующей строке.

Лично я написал бы hello.toString.length с предположением, что все вызовы не имеют побочных эффектов (поэтому я опускаю скобки), а затем я должен оставить точку для ее компиляции.

...