voglio definire una funzione:Come convertire un Qualcuno ("") in Nessuno in una riga?
def convert(x: Option[String]): Option[String] = ...
Quando x
è Some(str)
e str
è vuota dopo il taglio, viene convertito in un None, altrimenti, sarà un Some
con stringa tagliata.
Così, il banco di prova sarà:
convert(Some("")) == None
convert(Some(" ")) == None
convert(None) == None
convert(Some(" abc ")) == Some("abc")
posso scrivere come:
def convert(x: Option[String]): Option[String] = x match {
case Some(str) if str.trim()!="" => Some(str.trim())
case _ => None
}
Ma spero di trovare un'implementazione più semplice (una riga).
Hai qualche carenza di caratteri di nuova riga nel tuo ambiente? Ti viene pagato inversamente proporzionale al numero di righe che scrivi? Il mio consiglio sarebbe semplicemente di usare la versione a due linee e smettere di fare il lavoro per te :-) – paxdiablo
Mi piace solo rendere il mio codice semplice e chiaro – Freewind
@paxdiablo: È una domanda valida in quanto l'esempio può essere effettivamente migliorato: Il codice esegue 'str.trim' due volte che è chiaramente qualcosa da evitare. – Debilski