繁体   English   中英

模式匹配检查元组类型

[英]Pattern matching checking for type of tuple

我正在尝试使用Scala的模式匹配功能来检查第一个参数的类型,并接受第二个参数的任何任意类型-尽管我不确定语法,因为我还很陌生,所以它在Scala中如何工作由于元组与模式匹配和case语句有关,因此无法找到有关元组在Scala中如何相互配合的任何信息。

我最初的尝试:

case foo => (eval(e1, e2), eval(e1, e2)) match
{
    case (S(e1), _) => (bar(e1, e2) + bar(e1, e2))
    case _ => ???
}

其中,本在这种情况下,检查第一个参数是一个字符串,并接受第二个是什么,然后做什么吧希望。

此外,我看到了这样的示例:

case (_: String, _: Int) => ???

但是,我不清楚您如何在右手陈述中引用这些参数。

在语句中引用这些_参数的正确方法是什么?

您可以使用:表示类型。 下面的例子。 您可以使用变量引用任何值,而无需显式声明类型。

斯卡拉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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM