В Scala есть оператор присваивания «=» вызов метода?

Согласно книге Scala «Программирование в Scala» –

Scala is an object-oriented language in pure form: every value is an object and every operation is a method call. For example, when you say 1 + 2 in Scala, you are actually invoking a method named + defined in class Int.

В этом смысле, как насчет операции присваивания с использованием оператора «=»? Это также метод? Кажется маловероятным, потому что тогда он должен присутствовать во всех classах или в каком-то обычном суперclassе (скажем, java.lang.Object?), Который все classы должны наследовать. Или не все операции – это действительно вызовы методов в Scala?

Неа. Оператор присваивания ( = ) является зарезервированным словом. Также ниже приведены:

_: = => <- <: <%>: # @

Более подробный список см. В § 1.1 . Дополнительная информация относительно = описана в § 6.12.4 .

Так что да, это не вызов метода.

Небольшое дополнение к Джатину . Существует один случай, когда = можно рассматривать как вызов метода, но на самом деле это просто синтаксический сахар. В OO-части Scala, где живет уродливый var s, вы можете написать следующее:

 class Test { private var x0: Int = 0 def x = x0 def x_=(a: Int) = x0 = a } 

Затем вы можете назначить новые ints для x :

 scala> val t = new Test t: Test = [email protected] scala> tx = 1 tx: Int = 1 

Последняя строка будет удалена в t.x_=(1) . Я думаю, что в этом случае, учитывая синтаксический сахар, можно сказать, что = – вызов метода.

В то время как другие ответы правильны для стандартного Scala, существует вариант под названием Scala-Virtualized where = а другие структуры управления вызовы методов.

  • Требуется уточнение для лирических идентификаторов Scala (backticks)
  • частный против частного
  • В чем смысл использования подчеркивания в Scala?
  • Каково ключевое слово forSome в Scala?
  • Перегрузка конструктора Scala?
  • Когда использовать знак равенства в объявлении метода Scala?
  • Почему объектные объекты более объектно-ориентированные?
  • В чем разница между определением var и val в Scala?
  • Разница между использованием атрибута приложения и основным методом в scala
  • Отладка Scala-кода с помощью простого-build-инструмента (sbt) и IntelliJ
  • Что такое функция приложения в Scala?
  • Interesting Posts

    В чем разница между «шлюзом по умолчанию» и «предпочтительным DNS-сервером»?

    jQuery и TinyMCE: значение textarea не отправляет

    Могу ли я заставить функцию plpgsql возвращать целое число без использования переменной?

    Окно столбца DataGridView – значение и функциональность

    Шаблоны для обработки пакетных операций в веб-службах REST?

    Как скомпилировать C-код с анонимными структурами / объединениями?

    Eclipse говорит: «Рабочее пространство в использовании или не может быть создано, выбрано другое». Как открыть рабочую область?

    Получите песни с Windows iPod и на Mac

    Настольный клиент Activesync / OWA

    Одиночные кавычки и двойные кавычки в C или C ++

    Доступ к веб-сайту через общедоступный IP-адрес веб-серверов с ПК в пределах одной локальной сети

    Как получить байты из UnsafeMutableRawPointer?

    Как изменить каталог установки программы по умолчанию в Windows 7?

    Защита ячеек в Excel, но они могут быть изменены сценарием VBA

    Есть что-то вроде «Firebug для IE» (для отладки JavaScript)?

    Давайте будем гением компьютера.