Warum ist es nicht möglich, Ausdrücke in case-Anweisungen zu platzieren? :scala: nicht möglich, auf Wertausdrücke zu passen?
x match {
case <VALUE EXPR> => {}
}
Zum Beispiel
x match {
case (1+2) => {}
}
ist nicht erlaubt, aber
val someval = (1+new java.util.Random().nextInt())
x match {
case someval => {}
}
ist. Es scheint, dass wenn der zweite Fall erlaubt ist, auch der erste.
Ich versuche, eine Liste der Zuordnungen wie folgt hinzuzufügen:
val typ:Type = symbol.typeSignature
typ match {
case typeOf[collection.immutable.List[Any]] => { return a function to handle this type }
case typeOf[...] => {}
case typeOf[...] => {}
... many
}
Beachten Sie, dass 'Fall someval' nicht tut, was Sie erwarten, es wird alles akzeptiert, weil es eine neue schafft Variable. Um dies zu ändern, müssen Sie den Variablennamen groß schreiben oder ihn mit Backticks umgeben. –