加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala在Variadic函数中用下划线标出星号?

发布时间:2020-12-16 18:53:33 所属栏目:安全 来源:网络整理
导读:参见英文答案 What does `:_*` (colon underscore star) do in Scala?????????????????????????????????????3个 我目前正在关注 Functional Programming In Scala 这是在List [A]中应用的伪实现 def apply[A](as: A*): List[A] = if (as.isEmpty) Nil else :
参见英文答案 > What does `:_*` (colon underscore star) do in Scala?????????????????????????????????????3个
我目前正在关注 Functional Programming In Scala

这是在List [A]中应用的伪实现

def apply[A](as: A*): List[A] = 
  if (as.isEmpty) Nil
  else ::(as.head,apply(as.tail: _*))

如果我省略:_ * in astail:_ *,scala抱怨类型不匹配,这是有道理的,因为as.tail是Seq [A].

但_ *究竟在这做什么?

编辑::

正确的术语是序列通配符

解决方法

:_ *表示法只是告诉scala编译器处理传递给方法的集合的元素(在参数中进行的集合:_ *),好像它们已经逐个传递到varargs方法中一样.例如,如果你有

def foo(x: Int*) = x.sum
val xs = Seq(1,2,3,4)

然后

foo(xs: _*)

就像你打字一样工作

foo(1,4)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读