Я работаю с Scala какое-то время, и это до сих пор меня очень беспокоит. Я не знаю, почему они сделали это так сложно. Я пытаюсь понять соответствующие классы case, когда для этого класса case только два члена
def main(args: Array[String]): Unit = {
case class X(a: String, i: Int)
def doSome(x: X): Unit = {
x match {
case "x" X 1 => print("ahhh") // <---- HERE !
case X(_, _) => println("")
}
}
doSome(X("x", 1))
case class Y(a: String, i: Int, j: Int)
def doAnother(y:Y): Unit = {
y match {
case "y" X 1 => print("ahhh") // how to make similar syntax when there are more than one syntax ?
case Y(_, _,_) => println("") // this is understandable
}
}
doAnother(Y("y", 1,2))
}
Как может синтаксис "x" X 1
соответствовать X("x",1)
, и если "x" X 1
может соответствовать совпадению X("x",1)
, тогда что соответствует Y("y",1,2)
, очевидно, "y" Y 1 Y 2
не работает?
Что такого особенного в первом аргументе, если мы можем сопоставить "y" Y (1,2)?