Ich möchte ein paar funky Schließung-wie Zeug machen. Ich möchte, dass eine Methode ein anonymes Objekt zurückgibt, dessen Eingeweide auf die Parameter der Methode verweisen. Hier ist der Code, den ich schrieb, dass meine Absicht zeigt:Scala-Funktion, die ein anonymes Objekt zurückgibt?
object SessionManagement {
implicit class SessionManagementExtensions(val c : ChainBuilder) {
def set(dest: String) = object {
def from(src: String) =
c.exec(session => {
val list = session(src).as[Vector[String]]
val i = if (list.size == 0) -1 else Random.nextInt(list.size)
val value = if (i > 0) list(i) else "INVALID_" + dest
session.set(dest, value)
})
def to[T](v: Expression[T]) =
c.exec(session => session.set(dest, v))
}
}
, was ich versuche zu tun ist, einen Anruf müssen „set“ zurückgeben ein Objekt, das mir erlaubt, dann ist die Kette zusammen einen Aufruf an“.to “, etwa so:
.set(SOMETHING).to(OTHER)
Aber ich kann nicht sagen,
def foo = object { ... }
gibt es eine Möglichkeit in Scala zu bekommen, was ich nach bin? Muss ich eine Klasse definieren und instanziieren?
Der Rückgabetyp von 'set' soll also' {def from (src: String) sein: Unit; Def zu [T] (v: Ausdruck [T]): Einheit} '? –