Методы и его использование в Scala [duplicate]

Вот плавный плагин jQuery, завершающий всю сделку (в основном те же самые принципы, что и ответ Ника ): http://strd6.com/2011/09/html5-javascript-pasting -image-data-in-chrome /

У этого есть живая демонстрация, аннотированный исходный код и все.

5
задан Sumit Nigam 30 September 2013 в 06:14
поделиться

3 ответа

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

_: = => & lt; - & lt ;: & lt;%>: # @

Для получения более полного списка см. § 1.1 . Дополнительная информация о = описана в § 6.12.4.

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

11
ответ дан Jatin 17 August 2018 в 08:43
поделиться
  • 1
    Немного удивительно также найти modulo (%) оператора в этом списке. На мой взгляд, он похож на другие основные арифметические операторы, такие как +, - и т. Д., И в этом смысле также мог быть методом. – Sumit Nigam 30 September 2013 в 09:32
  • 2
    @ Считайте, что это не %, но <% синтаксический сахар для неявного представления в параметрах типа – 4lex1v 30 September 2013 в 09:40
  • 3
    Конечно, спасибо, что указали, что Алексей. – Sumit Nigam 30 September 2013 в 10:41

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

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 = Test@4166d6d3

scala> t.x = 1
t.x: Int = 1

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

15
ответ дан 4lex1v 17 August 2018 в 08:43
поделиться
  • 1
    Что вы подразумевали под синтаксическим сахаром ? Означает ли это, что компилятор Scala делает магию позади? – null 2 January 2015 в 19:31
  • 2
    Да! Это компилятор. @suud – Jatin 12 April 2016 в 07:24

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

2
ответ дан Alexey Romanov 17 August 2018 в 08:43
поделиться
  • 1
    Я действительно хочу, чтобы этот проект был объединен в магистральную Scala. С точки зрения чистого ОО имеет смысл реализовать поведение var и =, тем более if, while и т. Д. – 0__ 30 September 2013 в 13:54
Другие вопросы по тегам:

Похожие вопросы: