我的一个函数产生一个数组 - 一组有序的,连续编号的记录。但据我所知,Scala Array是一个可变集合,而功能方法表明在一般情况下返回不可变集合会更有意义。因此,我只需致电Array.toIndexedSeq
即可返回IndexedSeq
而不是Array
。这可以被认为是正确的做法吗?它是否会引入任何可能影响功能和结果使用的明显行为,并且可能被认为是不合需要的?这个问题有没有更好的做法?
答案 0 :(得分:4)
这可以被视为正确的事吗?
是
它是否会引入任何可能影响该行为的不明显行为 功能和结果用法可能被认为是不合需要的吗?
不,不是我知道的。
这个问题有更好的做法吗?
如果可能,尝试完全取消使用数组,除非性能至关重要。
答案 1 :(得分:4)
我能想到的唯一可能不显而易见的事情是array.toIndexedSeq
不像Java的Collections.unmodifiable*
方法那样在数组本身上创建一个简单的包装器,而是将元素复制到一个新的集合中。 (否则后来数组中的更改可能会导致“不可变”序列突然发生变异。)