scala - 匹配一对相等的值

标签 scala tuples match

我正在尝试处理一个元组,其中一种情况是两个值相等。有没有更好、更简洁的方式来 match在这比

(p, q) match {
  case (p, q) if (p == q) => println("Match!")
  ...
}

?

最佳答案

就我个人而言,我认为您的做法很棒,因为它简单、直观,而且读者一目了然。

也就是说,这是一种无需 if 即可完成的方法条款。您可以只匹配交换版本,使用反引号转 q成稳定的标识符。正如@Luigi 指出的那样,您只需检查 p匹配 q :

  (p, q) match {
    case (`q`, _) => println("Match!")
    ...
  }

像这样:
def f(p: Int, q: Int) {
  (p, q) match {
    case (`q`, _) => println("Match!")
    case _ => println("No")
  }
}

f(1, 2)   // "No"
f(1, 1)   // "Match!"

关于scala - 匹配一对相等的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12665042/

相关文章:

scala - 如何从 Spark 管道逻辑模型中提取变量权重?

python - 根据第一个值从元组列表中获取值

C++ 错误处理 - 使用 std::pair 或 std::tuple 返回错误代码和函数返回的缺点

c++ - 构建以元组为键的无序映射

mysql - 如何在 MySQL MATCH() AGAINST() 搜索中获取完全匹配的关键字?

scala - 如何在 Scala 中使用 StringOps 的 fold 方法?

scala - 迭代器上的Scala映射不会产生副作用

scala - 从 Java 属性获取 Scala 映射

arrays - 组合 LEFT、SEARCH 和 REGEXREPLACE

Java ^ 正则表达式不匹配字符串中的新行