Voglio fare delle cose funky simili a chiusure. Voglio un metodo per restituire un oggetto anonimo le cui viscere fanno riferimento ai parametri del metodo. Ecco il codice che ho scritto che illustra il mio intento:La funzione Scala che restituisce un oggetto anonimo?
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))
}
}
Quello che sto cercando di fare è avere una chiamata al "set" restituire un oggetto che mi permette di poi concatenare una chiamata a" .to ", in questo modo:
.set(SOMETHING).to(OTHER)
Ma non posso dire
def foo = object { ... }
c'è un modo a Scala per ottenere quello che sono dopo? Devo definire una classe e creare un'istanza?
Quindi si desidera che il tipo restituito di 'set' sia' {def from (src: String): Unit; def per [T] (v: Expression [T]): Unit} '? –