Особые соображения в Scala [duplicate]

Кстати, помните, что если строка равна null, вызов:

int i = Integer.parseInt(null);

выдает NumberFormatException, а не исключение NullPointerException.

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

3 ответа

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

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

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

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

13
ответ дан Jatin 3 September 2018 в 18:39
поделиться

Небольшое дополнение к ответу Жатина. Существует один случай, когда = можно рассматривать как вызов метода, но на самом деле это просто синтаксический сахар. В 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 3 September 2018 в 18:39
поделиться

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

2
ответ дан Alexey Romanov 3 September 2018 в 18:39
поделиться
Другие вопросы по тегам:

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