gpt4 book ai didi

scala - 分解函数参数中的元组

转载 作者:行者123 更新时间:2023-12-02 07:57:04 24 4
gpt4 key购买 nike

在 python 中我可以这样做:

def f((a, b)):
return a + b

d = (1, 2)
f(d)

这里传入的元组在传递给 f 时被分解。

现在在 scala 中我正在这样做:

def f(ab: (Int, Int)): Int = {
val (a, b) = ab
a + b
}

val d = (1, 2)
f(d)

我可以在这里做些什么,以便在传入参数时进行分解吗?只是好奇。

最佳答案

您可以创建一个函数并将其输入与模式匹配进行匹配:

scala> val f: ((Int, Int)) => Int = { case (a,b) => a+b }
f: ((Int, Int)) => Int

scala> f(1, 2)
res0: Int = 3

或者将方法的输入与 match 关键字进行匹配:

scala> def f(ab: (Int, Int)): Int = ab match { case (a,b) => a+b }
f: (ab: (Int, Int))Int

scala> f(1, 2)
res1: Int = 3

另一种方法是使用带有两个参数的函数并将其“元组”:

scala> val f: (Int, Int) => Int = _+_
f: (Int, Int) => Int = <function2>

scala> val g = f.tupled // or Function.tupled(f)
g: ((Int, Int)) => Int = <function1>

scala> g(1, 2)
res10: Int = 3

// or with a method
scala> def f(a: Int, b: Int): Int = a+b
f: (a: Int, b: Int)Int

scala> val g = (f _).tupled // or Function.tupled(f _)
g: ((Int, Int)) => Int = <function1>

scala> g(1, 2)
res11: Int = 3

// or inlined
scala> val f: ((Int,Int)) => Int = Function.tupled(_+_)
f: ((Int, Int)) => Int = <function1>

scala> f(1, 2)
res12: Int = 3

关于scala - 分解函数参数中的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11615656/

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