scala - Scala 中是否可以解构输入参数?

标签 scala clojure

有没有办法在 Scala ( akin to Clojure ) 中解构函数的输入参数?

所以,而不是

scala> def f(p: (Int, Int)) = p._1
f: (p: (Int, Int))Int

我想要这个(它不起作用):
scala> def f((p1, p2): (Int, Int)) = p1

最佳答案

我猜在 Scala 中你会使用模式匹配来实现相同的目标,例如像这样:

val f: (Int, Int) => Int = { case (p1, p2) => p1 }

或者,等效地:
def f(p: (Int, Int)) = p match { case(p1, p2) => p1 }

如果可以推断类型,则 (Int, Int) => Int可以删除:
List((1, 2), (3, 4)) map { case (p1, p2) => p1 }

关于scala - Scala 中是否可以解构输入参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16326434/

相关文章:

Clojure:对于 n 个维度

scala - Play 应用程序中的规范/scalatest 交互问题

scala - 如何查询Spark数据集的列名?

emacs - 如何让Emacs,nrepl.el和Leiningen一起玩?

clojure - Clojure 中的解构是什么意思?

clojure - 如何将带样式的 HTML 标签转换为 Hiccup? react 问题

html - 如何在 Lift 框架中添加新页面

scala - 检查案例类实例集合的属性

java - 如何在 Spring 中 @Autowire scala 对象

heroku - heroku 上的 buildpack 独立 Assets 管理