30
看样子toSeq
方法在Scala集合返回scala.collection.Seq
,我还可以返回Traversable
或Iterable
,但需要将其转换为scala.collection.immutable.Seq
。斯卡拉转换可迭代或collection.Seq到collection.immutable.Seq
有没有简单的方法来做到这一点?
感谢 理查德
看样子toSeq
方法在Scala集合返回scala.collection.Seq
,我还可以返回Traversable
或Iterable
,但需要将其转换为scala.collection.immutable.Seq
。斯卡拉转换可迭代或collection.Seq到collection.immutable.Seq
有没有简单的方法来做到这一点?
感谢 理查德
使用to
方法在斯卡拉2.10乱收类型之间进行转换:
scala> Array(1, 2, 3).toSeq
res0: Seq[Int] = WrappedArray(1, 2, 3)
scala> Array(1, 2, 3).to[collection.immutable.Seq]
res1: scala.collection.immutable.Seq[Int] = Vector(1, 2, 3)
很好谢谢 –
你的回答帮我,但为什么,这是为什么即使需要?我只使用不可变集合 - for-yield的结果怎么会需要这样一个.to? – akauppi
我的朋友,伊万尤尔琴科澄清这一点:问题是,有三件事情: A)scala.collection.Seq B)scala.collection.immutable.Seq C)scala.collection.mutable.Seq B和C派生自A,所以如果我们有A,我们不能肯定地说它是可变的还是不可变的,这就是为什么显式转换(.toList或者其他)或者从一开始就将它们设置为不可变的原因 – akauppi