У меня есть объект под названием +
с помощью метода, который называется B
. Я пытаюсь вызвать этот метод следующим образом:В Scala, как мне вызвать методы для объекта с именем `+` без получения синтаксической ошибки?
object + {
def B() = Console.println("'Sup, world?")
}
object Main extends App {
+.B()
}
(Ideone ссылка: http://ideone.com/0OyKw2)
Но это дает мне ошибку синтаксиса:
Main.scala:6: error: illegal start of simple expression
+.B()
^
Я попробовал пару различные способы вызова этого метода, такие как + .B
, (+).B
, `+`.B
, (`+`).B
и (+).B
. Я еще ничего не нашел.
Могу ли я назвать этот метод каким-либо образом, или мне лучше всего использовать другое имя для объекта?
Это страшная мысль, что объект с именем '+' и методы в Скале обычно начинаются со строчных, так 'b()' вместо 'B()' – nmat
@Tanner Swett Есть ли причина, по которой вы хотите назвать свой класс, как оператор? Возможно, мы сможем найти более идиоматический шаблон scala для достижения желаемого эффекта оператора. – rmin
@rmin Я изначально назвал класс 'AppendVect', но у меня появилось много типов, похожих на AppendVect [MyFirstType, AppendVect [MySecondType, MyThirdType]]'. Поскольку «AppendVect» - очень важный класс, я решил, что имя, подобное '+', было бы подходящим, так как тогда я мог бы написать «MyFirstType + (MySecondType + MyThirdType)». Я попробовал переименовать класс в '++' вместо этого, и это, кажется, хорошо работает. –