我想初始化一个scala BitSet来包含从1到N的整数.以下内容可行,但我正在寻找更好的解决方案:
var s = BitSet.empty ++ (1 to n)
Run Code Online (Sandbox Code Playgroud)
我希望我可以这样做:
var s:BitSet = (1 to n).toSet
Run Code Online (Sandbox Code Playgroud)
......但是会导致错误:
error: polymorphic expression cannot be instantiated to expected type;
found : [B >: Int]scala.collection.immutable.Set[B]
required: scala.collection.immutable.BitSet
Run Code Online (Sandbox Code Playgroud)
我错过了一些明显的东西吗
kir*_*uku 13
那是什么breakOut:
val s: BitSet = (1 to n).map(identity)(breakOut)
Run Code Online (Sandbox Code Playgroud)
请参阅此问题以了解breakOut的内部工作原理.
另一个解决方案是使用BitSet的构造函数:
val s = BitSet((1 to n): _*)
Run Code Online (Sandbox Code Playgroud)
在: _*告诉你要使用的范围为重复参数的编译器.
因为breakOut看起来很难看,你可以使用pimp-my-library模式来生成更好看的代码(如这里所述):
val s = (1 to n).to[BitSet]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2199 次 |
| 最近记录: |