gpt4 book ai didi

Scala : it is impossible to put a tuple as a function's argument

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

我不能将元组作为方法参数传递:

scala> val c:Stream[(Int,Int,Int)]= Stream.iterate((1, 0, 1))((a:Int,b:Int,c:Int) => (b,c,a+b))
<console>:11: error: type mismatch;
found : (Int, Int, Int) => (Int, Int, Int)
required: ((Int, Int, Int)) => (Int, Int, Int)

谢谢。

最佳答案

就像函数文字一样:

(x:Int) => x + 1

是一个参数的函数,如下
(x:Int, y: Int, z: Int) => x + y + z

是三个参数的函数,而不是 3tuple 的一个参数

您可以使用 case 巧妙地完成这项工作。陈述:
scala> val c: Stream[(Int,Int,Int)] = 
Stream.iterate((1, 0, 1)){ case (a, b, c) => (b, c, a+b) }

c: Stream[(Int, Int, Int)] = Stream((1,0,1), ?)

另一种方法是传递元组,但由于所有 _1,这真的很难看。访问器(accessor):
scala> val c:Stream[(Int,Int,Int)] = 
Stream.iterate((1, 0, 1))( t => (t._2, t._3, t._1 + t._2) )

c: Stream[(Int, Int, Int)] = Stream((1,0,1), ?)

关于Scala : it is impossible to put a tuple as a function's argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31207359/

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