Я пишу небольшой DSL. Он может использоваться как пользовательская структура управления с другой точки зрения.Как заставить оператора вызвать это внутри класса
вот маленький пример
case class Reference(var value : Double) {
def apply() = value
def update(v : Double) = value = v
}
implicit def toReference(ref:Reference) = ref.value
trait Store {
import scala.collection.mutable.Buffer
val index : Buffer[Reference] = Buffer()
def ++ (v : Double) : Reference = {
val r = Reference(v)
index += r
r
}
implicit def toSelf(u : Unit) = this
}
class ExampleStore extends Store {
val a =() ++ 1.0
val b =() ++ 2.0
val c =() ++ 0.5
}
val store = new ExampleStore
store.c() = store.a + store.b
Я хотел бы получить доступ к операторам класса, без предшествующего this
, но не мог найти другой способ, чем указать, по крайней мере в начале ()
выражений. А «префикс» форма, что мне нужно
Некоторые способ переписать этот пример следующим образом
class ExampleStore extends Store {
val a =++ 1.0
val b =++ 2.0
val c =++ 0.5
}
Можно ли придумать какой-нибудь трюк, чтобы принять такое Scala соглашение?
составитель должен знать, что ++ не является унарный оператор, так как унарный оператор список ограничен – ayvango