Когда использовать ( пробел ) и когда использовать . ( точка ) при вызове методов в Scala?

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

Есть ли конвенция?

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

"hello" toString 

и

"hello".toString()

И их можно даже смешивать

"hello".toString() length 

Какая конвенция?


person OscarRyz    schedule 03.08.2010    source источник
comment
проверьте codecommit.com/scala-style-guide.pdf   -  person Yardena    schedule 03.08.2010


Ответы (2)


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

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

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

person huynhjl    schedule 04.08.2010

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

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

person mipadi    schedule 03.08.2010
comment
Я понимаю что ты имеешь ввиду. Один хороший пример, который я видел в курсе Coursera, был с методом union. Я думаю, что это выглядит более читабельно, когда написано a union b с использованием пробела. И в этом случае union действует как оператор. - person jFrenetic; 16.01.2017