Lo scala ha un valore equivalente allo schema?schema cond in scala lingua
risposta
Immagino che stiate cercando match
(o semplicemente semplicemente if/else if/else
).
case class Paired(x: Int, y: Int)
def foo(x: Any) = x match {
case string : String => println("Got a string")
case num : Int if num < 100 => println("Number less than 100")
case Paired(x,y) => println("Got x and y: " + x + ", " + y)
case unknown => println("??: " + unknown)
}
Le prime due istruzioni case mostrano la corrispondenza del modello in base al tipo. Il terzo mostra l'uso di un estrattore per suddividere i dati in parti costituenti e assegnarle a variabili. Il terzo mostra una corrispondenza di pattern variabile che corrisponderà a qualsiasi cosa. Non mostrato è il caso _:
case _ => println("what")
che come il pattern match variabile, corrisponde a qualsiasi cosa, ma non vincola l'oggetto abbinato a una variabile.
La classe case in alto è una scorciatoia Scala per la creazione di un estrattore e della classe stessa.
Ovviamente, né match
né if
fa esattamente la stessa cosa di cond
. Una possibilità è quella di fare in questo modo:
object Cond {
def apply(clauses: Iterable[(()=>Boolean,()=>Any)]): Any = {
clauses find (_._1()) map (_._2()) getOrElse()
}
}
Questo oggetto accetta qualcosa Iterable in cui ogni elemento è una coppia di una funzione che restituisce booleano e una funzione che restituisce Qualsiasi. Prova a trovare un oggetto la cui prima funzione restituisce true, smette di cercare se ne trova una, chiama la seconda funzione su un elemento trovato e restituisce il risultato di tale funzione (o() se non ne è stato trovato nessuno).
Esempi:
val clauses = Seq(
({()=>false}, {()=>println("foo")}),
({()=>true}, {()=>println("bar")})
)
Cond(clauses)
def checkYear(year: Int) = {
Cond(Seq(
({()=>year % 400 == 0}, {()=>42}),
({()=>true}, {()=>{c:Char => (c.toString * 3)}})
))
}
ETA: Sì, lo so che è brutto, ma funziona.
- 1. Informazioni su "cond" nello schema
- 2. clojure like cond in F #
- 3. let inside cond
- 4. Clojure-New Cond Macro?
- 5. Spark: Creazione programmatica dello schema del dataframe in scala
- 6. Come utilizzare PHP // Thread // Mutex // Cond
- 7. C'è una cosa elseif in MongoDB a $ cond mentre aggregando
- 8. Qual è l'errore nel valore [[3L]] (cond) in R?
- 9. Stampa console schema
- 10. Domande sullo stile di codifica dello schema
- 11. Scala Slick, come creare schema SOLO se non esiste
- 12. predefinito Schema di partizionamento in Spark
- 13. parametri di funzione con e senza() in Scala
- 14. Scala lista condizionale costruzione
- 15. CodeMirror - lingua auto-detection
- 16. _cmd in Swift lingua
- 17. Variazione semantica in lingua
- 18. Schema in Emacs esplode schema di colori
- 19. Convertitori schema JSON Schema in GraphQL
- 20. Cosa succede in una clausola 'cond' di Scheme quando il 'else' è omesso?
- 21. Come usare $ o $ nin nell'aggregazione Mongo $ gruppo $ cond
- 22. Il raggruppamento condizionale con $ esiste all'interno di $ cond
- 23. Schema - Schema creatore mongodb
- 24. Get nome di lingua in quella lingua dal codice di lingua
- 25. In quale lingua è scritto Scala e dove si trova la fonte?
- 26. Lingua inglese cambia lingua delle etichette?
- 27. Lingua di comando della lingua naturale
- 28. Ottieni lingua corrente in CultureInfo
- 29. funzione ricorsiva in lingua go
- 30. database sqlite in lingua persiana