如何实现自动化? (将数组的元素插入函数的参数中)
def func(d1: Boolean, d2: Boolean, d3: Boolean, d4: Boolean) = ???
val data = Array(true, true, false, false)
func(
data(0),
data(1),
data(2),
data(3)
)
答案 0 :(得分:1)
您可以使用' splat'运算符与varargs参数:
def func(args : Boolean*) = {
args foreach println
}
val data = Array(true, true, false, false)
func(data: _*)
答案 1 :(得分:1)
如果我没有正确地解决你的问题:
def func(d: Boolean*) = {
d.map( if (_) "yes" else "no" ).foreach(println)
}
val data = Array(true, true, false, false)
func(data: _*)
yes
yes
no
no
答案 2 :(得分:0)
如果您设法将列表转换为元组:
scala> def func(d1: Boolean, d2: Boolean, d3: Boolean, d4: Boolean) = s"$d1 $d2 $d3 $d4"
func: (d1: Boolean, d2: Boolean, d3: Boolean, d4: Boolean)String
scala> val ff = func _
ff: (Boolean, Boolean, Boolean, Boolean) => String = $$Lambda$1151/1744486549@5a13f1f7
scala> val data = (true,false,true,true)
data: (Boolean, Boolean, Boolean, Boolean) = (true,false,true,true)
scala> ff.tupled(data)
res8: String = true false true true
答案 3 :(得分:0)
制作一个“tupled”功能,就像在Assen Kolov的回答中一样:
def func(d1: Boolean, d2: Boolean, d3: Boolean, d4: Boolean) = ???
val f = func _
然后从Seq
创建一个元组。此answer显示了如何以类型安全的方式执行此操作。
使用元组参数调用函数f
。