scala变量参数:_ *
发布时间:2020-12-16 18:05:40 所属栏目:安全 来源:网络整理
导读:有人可以带来更多关于 scala代码的内容,这对我来说并不完全清楚吗?我有以下功能定义 def ids(ids: String*) = { _builder.ids(ids: _*) this } 然后我试图将变量参数列表传递给此函数,如下所示: def searchIds(kind: KindOfThing,adIds:String*) = {...ids
有人可以带来更多关于
scala代码的内容,这对我来说并不完全清楚吗?我有以下功能定义
def ids(ids: String*) = { _builder.ids(ids: _*) this } 然后我试图将变量参数列表传递给此函数,如下所示: def searchIds(kind: KindOfThing,adIds:String*) = { ... ids(adIds) } 首先,ids(adIds)片段不起作用,最初有点奇怪,因为错误消息说:类型不匹配,预期:字符串,实际:Seq [String].这意味着变量参数列表不会被键入为集合或序列. 为了解决这个问题,请使用技巧ids(adIds:_ *). 我不是100%肯定如何:_ *有效,有人可以放一些棚子吗? 有人可以解释一下吗? 谢谢 解决方法
你应该看看你的方法定义:
def ids(ids: String*) 这里你说这个方法需要可变数量的字符串,例如: def ids(id1: String,id2: String,id3: String,...) 然后是第二种方法: def searchIds(kind: KindOfThing,adIds:String*) 这也需要一个可变数量的字符串,它们打包成一个Seq [String],所以adIds实际上是一个Seq,但你的第一个方法id不带Seq,它需要N个字符串,这就是id(adIds:_) *)工作. :_ *这被称为splat operator,正在做的是将Seq splat为N个字符串. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |