La correspondance de modèles en Scala équivaut à un commutateur en Java # 🎜🎜#
En Java, nous avons la syntaxe de base de switch case default. En Scala, nous avons match et case Le rôle de default est remplacé par caseSyntaxe de base comme suit : #🎜 🎜#val a=10 val b=20 var c='+' c match { case '+'=> println(a+b) case '-'=> println(a-b) case _ =>println("错误的运算符") }
case _ signifie qu'aucune des situations ci-dessus n'est remplie
. Garde de modèle :
(en ajoutant en fait un jugement dans le cas)# 🎜🎜#
val x=3.153 val value: Any = x match { case i: Double if i >= 0 => i case j: Double if j < 0 => -j case _ => "type illegal" }Correspondance de type : Lors de la définition de la fonction, le paramètre est la classe parent de tous les objets Any
def function(x:Any): Unit ={ x match { case s:String =>println("字符串") case i:Int=>println("整数") case d:Double=>println("小数") case _ =>println("其他") } }
object Test_03MatchObject { def main(args: Array[String]): Unit = { val sss: person1 = person1("sss", 1) sss match { case person1("sss",1)=>println("victory") case _=>println("defite") } } class person1(val name: String,val age :Int){ } object person1{ def apply(name: String, age: Int): person1 = new person1(name, age) def unapply(arg: person1): Option[(String, Int)] = if (arg==null) { None } else{ Some(arg.name,arg.age) } } }
case class person1(val name: String,val age :Int)Fonction partielle : Abréviation de fonction partielle : Nous pouvons directement appelez la fonction de collecte pour appeler la fonction partielle Paramètres écrivez directement cas + l'opération dont vous avez besoinLa méthode d'abréviation équivaut à omettre la correspondance, et l'effet est équivalent à filtre+carte
#🎜 🎜#Vous pouvez également utiliser partial dans le scénario d'utilisation de la fonction map
Utilisation de la fonction partielle :
val list = List(List(1, 2, 3, 4), List(1), List(8, 5)) val list1: List[Int] = list.collect({ case List(x, y, _*) => y }) println(list1)
Conversion implicite :
personal Compréhension :
La conversion implicite est l'opération que l'on effectue lorsqu'une erreur se produit lors de l'appel d'une fonction sur un objet qui n'est pas dans la classe dans laquelle il se trouve.
class MyRichInt(val self :Int) { def myMax(int: Int):Int = { if (int>self) int else self } }
#🎜 🎜# A présenter au début ---- conversion implicite implicite La fonction est ensuite définie
implicit def changeInt(self:Int) = { new MyRichInt(self) }
Lorsque la méthode de conversion implicite est la même et entre en conflit avec sa propre méthode, sa propre méthode sera utilisée (car la compilation n'échouera pas --- la définition officielle de la conversion implicite)#🎜 🎜#
Paramètres implicites : Nous connaissons déjà les valeurs des paramètres par défaut lors de la définition de la fonction, mais lors de l'appel, nous devons ajouter des parenthèses Ici, nous introduisons un nouveau concept Paramètres implicites Exemple de comparaison de paramètres :implicit val name:String="lisi" def sayhi(implicit name: String="sd"): Unit = { println(s"hi $name") } sayhi sayhi()
Si la classe cible de la conversion implicite est convertie en classe implicite, il n'est pas nécessaire de créer un nouvelle classe implicite dans la fonction principale
Vous pouvez appeler directement la fonction spécifiée
.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!