我正在尝试使用Scala的模式匹配功能来检查第一个参数的类型,并接受第二个参数的任意类型 - 尽管我不确定语法在Scala中是如何工作的,因为我相当新,我无法找到任何关于元组如何在Scala中相互作用的内容,因为它与模式匹配和案例陈述有关。
我最初的尝试:
case foo => (eval(e1, e2), eval(e1, e2)) match
{
case (S(e1), _) => (bar(e1, e2) + bar(e1, e2))
case _ => ???
}
其中,这个应该,在这种情况下,检查第一个参数是一个字符串,并接受第二个参数为什么,然后做任何想做的事情。
此外,我见过这样的例子:
case (_: String, _: Int) => ???
但是,我不清楚你如何在右手声明中引用这些参数。
在语句中引用这些_参数的正确方法是什么?
答案 0 :(得分:0)
您使用:
来确定类型。下面的例子。您可以使用变量引用任何值,而无需明确声明类型。
Scala REPL
scala> :paste
// Entering paste mode (ctrl-D to finish)
("Java", 1) match {
case (str: String, v) => println(s"value: $v")
case _ => println("something")
}
// Exiting paste mode, now interpreting.
value: 1