Синтаксис точки Scala (или отсутствие этого)

Используя единственный параметр, EventArgs, для данных, переданных событием, позволяет Вам добавлять данные к своему событию в будущих версиях Вашего программного обеспечения, не повреждая существующих потребителей. Вы просто добавляете новых участников к существующему EventArgs-производному-классу или создаете производный класс с новыми участниками.

Иначе непротиворечивость и принцип наименьшего количества удивления выравнивают по ширине использование EventArgs для передающих данных.

Что касается отправителя, в некоторых (но не все) случаи полезно знать то, что тип отправил событию. Используя тип кроме объекта для отправителя аргумент слишком строг: это означало бы, что другие отправители не могли снова использовать ту же подпись события.

9
задан Peter Mortensen 1 January 2014 в 18:14
поделиться

3 ответа

Строка 2 использует метод widen как оператор, вместо того, чтобы использовать его как метод Java:

val this1 = this.widen(that.width)

Ошибка возникает из-за того, что вы пропустили круглые скобки, которые можно сделать только при использовании метода в обозначении оператора. Вы не можете сделать это, например:

"a".+ "b" // error: ';' expected but string literal found.

Вместо этого вы должны написать

"a".+ ("b")

На самом деле вы можете сделать это с целыми числами, но это выходит за рамки этого вопроса.

Подробнее:

17
ответ дан 4 December 2019 в 09:37
поделиться

Я не пробовал, но, возможно, это сработает: val this1 = this.widen ( that.width)

widen , вероятно, метод, принимающий один параметр (плюс ссылка this ), такие методы можно использовать как операторы, как в вашем первом примере кода.

3
ответ дан 4 December 2019 в 09:37
поделиться

Когда вы используете точку, вы используете точечный стиль для вызова метода. Когда вы этого не сделаете, вы используете операторский стиль. Вы не можете смешивать оба синтаксиса для одного и того же вызова метода, хотя вы можете смешивать два для разных вызовов - например, that.width, используемая в качестве параметра в вызове стиля оператора для расширения.

См. Какие символы я могу опустить в Scala? или Каковы точные правила, когда вы можете опускать круглые скобки, точки, фигурные скобки, = (функции) и т. Д.? .

2
ответ дан 4 December 2019 в 09:37
поделиться
Другие вопросы по тегам:

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