Ist es möglich, Schutzbedingungen mit Musterabgleich in versiegelten Fallklassendeklarationen zu kombinieren?Scala: Können Schutzbedingungen mit Musterabgleichen innerhalb der versiegelten Fallklassen-Deklarationen kombiniert werden
Ich realisiere, dass es möglich ist, Schutzbedingungen innerhalb des Matchblocks einzubeziehen, aber ich denke, dass es vorteilhaft wäre, diese Bedingungen in den versiegelten Fallklassen zu definieren. Dies würde Entwicklern erlauben, eine strenge Menge möglicher Eingaben zu definieren, die der Compiler beim Mustervergleich überprüfen würde.
Also zusammenfassend würde Ich mag das Äquivalent von so etwas wie dies in der Lage sein zu tun:
// create a set of pattern matchable cases with guards built in
sealed abstract class Args
case class ValidArgs1(arg1:Int,arg2:Int) if arg1>1 && arg2<10 extends Args
case class ValidArgs2(arg1:Int,arg2:Int) if arg1>5 && arg2<6 extends Args
case class InvalidArgs(arg1:Int,arg2:Int) if arg1<=1 && arg2>=10 extends Args
// the aim of this is to achieve pattern matching against an exhaustive set of
// pre-defined possibilities
def process(args:Args){
args match
{
case ValidArgs1 = > // do this
case ValidArgs2= > // do this
case InvalidArgs = > // do this
}
}
Die vorgeschlagene Funktionalität erfordert nicht mehr die Scala bereits hat. Es ist nur eine Syntax Zucker. – ayvango
@ayvango Scala hat definitiv keine Unterstützung für statische Verifikation. Was meinst du und warum der Downvote? –
Thema Starter brauchen keine statische Überprüfung. Er will nur die unapply-Methode mit den bereitgestellten Hinweisen erweitern. – ayvango