Avendo,Come passare una o nessuna variabile arg in scala?
def test(args: Any*) = args.size
mi piacerebbe chiamarlo con lista di argomenti vuota a seconda delle condizioni, ma evitare if/else.
sono venuto fuori con questa soluzione:
test(List("one").filter(_ => condition) : _*)
Non c'è modo migliore di questo?
Per ulteriori contesto, sto giocando con Play 2.0 scala, e avere questo:
user => Redirect(routes.Application.index).withSession("username" -> user._1).withCookies(
List(Cookie("rememberme", Crypto.sign(user._1) + "-" + user._1)).filter(_ => user._3) : _*)
dove user._3
è booleano rembemberme.
Mi piacerebbe non chiamare conSession o chiamarlo con un elenco di argomenti vuoto (non per istanziare Cookie) se rememberme è falso, in scala.
Grazie.
Grazie, sono d'accordo questo è il più pulito, e davvero non ho voglio evitare se/else, ma evitare la lista di istanze, quindi mi mancava solo Seq.empty o Nil, quindi è utile anche la seconda risposta :) – avalez
@alavez se il tuo obiettivo era evitare di creare un'istanza di List, questo è un grosso fallimento, perché questo è esattamente ciò che 'Seq' fa! Lo si evita assegnando la parte prima con i cookie a un 'val t', quindi chiamando' if (utente._3) t.withCookies (...) altro t.withCookies() '. Le variabili temporanee sono buone! –
Grazie per il tuo commento. Ho ragione nel pensare che l'utilizzo di Nil eviterà anche l'istanziazione di List? E solo per una migliore comprensione, Seq.empty è in qualche modo migliore o peggiore di Nil? – avalez