Эквивалентны ли эти строки кода scala?

#scala

#scala

Вопрос:

Задан объект MyObject, у которого есть метод getSomething, который принимает строковый параметр и возвращает строку

Эквивалентны ли # 1 и # 2?

  1. val foo = myOjbect.getSomething("foo")

  2. val foo = myOjbect getSomething "foo"

И являются ли они приемлемыми / предпочтительными по сравнению с другими? Когда бы вы использовали 1 против 2 и наоборот?

Ответ №1:

Они строго эквивалентны.

Что касается вашего второго вопроса, Stack Overflow на самом деле не предназначен для определения того, что является приемлемым или предпочтительным. Тем не менее, вы можете обратиться к документации scala по вызову метода, в которой говорится об этом:

Scala имеет специальный синтаксис без знаков препинания для вызова методов, которые принимают один аргумент. Многие программисты Scala используют это обозначение для методов с символическими именами:

 // recommended
a   b

// legal, but less readable
a b

// legal, but definitely strange
a. (b)
  

но избегайте этого почти для всех методов с алфавитными именами:

 // recommended
names.mkString(",")

// also sometimes seen; controversial
names mkString ","
  

Комментарии:

1. документация, на которую даны ссылки, и приведенные примеры, безусловно, помогают мне разобраться в этом. Спасибо.

Ответ №2:

  1. Да, они идентичны.
  2. Нет консенсуса (я не думаю, что его возможно достичь), какая форма предпочтительнее (здесь такие вопросы являются оффтопическими).

Ответ №3:

Да, они идентичны. В основном я использую 2-ю версию при разработке тестов, таких как:

 result mustEqual "Hello"