gpt4 book ai didi

scala - Scala的参数列表中将直接支持元组拆包吗?

转载 作者:行者123 更新时间:2023-12-04 03:13:11 25 4
gpt4 key购买 nike

在Haskell中,您可以编写:

x :: (Int,Int) -> Int
x (p,s) = p

在Scala中,您将编写:
def x(a: (Int, Int)) = a._1

或者:
def x(a: (Int, Int)) = a match {
case (p, s) => p
}

为什么没有类似的东西
def x(_: (p: Int, s: Int)) = p

或者
def x(foo: (p @ Int, s @ Int)) = p

最佳答案

您正在寻找的功能称为解构,它的一般形式将远远超出了元组拆包的范围。我经常发现自己希望Scala拥有它,因为它是模式匹配语法的自然扩展:

def first((f: Int, l: Int)) = f
def displayName(Person(first, last)) = last + ", " + first

解构以(变量/值)定义的形式存在:
val (f, l) = tuple
val Person(first, last) = person

不幸的是,在这样的定义周围有一些 type safety issues,我认为这使您不太可能很快看到参数列表中的破坏。

关于scala - Scala的参数列表中将直接支持元组拆包吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6399824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com