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

从范围初始化scala BitSet

发布时间:2020-12-16 18:57:01 所属栏目:安全 来源:网络整理
导读:我想初始化一个 scala BitSet以包含从1到N的整数.以下将工作,但我正在寻找一个更好的解决方案: var s = BitSet.empty ++ (1 to n) 我希望我可以做这样的事情: var s:BitSet = (1 to n).toSet …但是会导致错误: error: polymorphic expression cannot be
我想初始化一个 scala BitSet以包含从1到N的整数.以下将工作,但我正在寻找一个更好的解决方案:

var s = BitSet.empty ++ (1 to n)

我希望我可以做这样的事情:

var s:BitSet = (1 to n).toSet

…但是会导致错误:

error: polymorphic expression cannot be instantiated to expected type;
  found   : [B >: Int]scala.collection.immutable.Set[B]
  required: scala.collection.immutable.BitSet

我错过了什么吗?

解决方法

这是什么breakOut是:

val s: BitSet = (1 to n).map(identity)(breakOut)

请参见this question了解breakOut的内部工作.

另一个解决方案是使用BitSet的构造函数:

val s = BitSet((1 to n): _*)

:_ *告诉编译器您要使用Range作为重复参数.

因为breakOut看起来很丑,你可以使用pimp-my-library模式来生成更好的代码(如here所述):

val s = (1 to n).to[BitSet]

(编辑:李大同)

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

    推荐文章
      热点阅读