例如,
this.emit()
elicitSlot
类型的lambda函数是否有快捷方式?
答案 0 :(得分:2)
你可以使用简单的展平。
scala> val a = Set(Array(1, 2),Array(8, 9))
//a: scala.collection.immutable.Set[Array[Int]] = Set(Array(1, 2), Array(8, 9))
scala> a.flatten
//res0: scala.collection.immutable.Set[Int] = Set(1, 2, 8, 9)
scala> a.map(x => x).flatten
//res9: scala.collection.immutable.Set[Int] = Set(1, 2, 8, 9)
此处a.map(f)
其中f为A => B
转换功能。其他明智的类型不匹配。
答案 1 :(得分:2)
您似乎在寻找identity
,
val a = Set(Array(1, 2) ,Array(8, 9))
a.flatten
a.map(identity).flatten
如果你进入身份认同
@inline def identity[A](x: A): A = x
因此它与x => x
的工作方式相同,无论是什么,只是按原样返回。
答案 2 :(得分:1)
由于您的标题会询问它为什么不起作用,而不仅仅是如何使其工作:错误消息告诉您。
当_
直接用作方法的参数时,其范围会扩展,以便a.flatMap(_)
为x => a.flatMap(x)
。这种情况更常见:您希望println(_)
始终打印<function1>
吗?