我的一個函數產生一個數組 - 一組有序的,連續編號的記錄。但據我所知,Scala Array是一個可變集合,而函數方法表明在一般情況下返回一個不可變集合會更有意義。所以我只需撥打Array.toIndexedSeq
返回IndexedSeq
而不是Array
。這可以被認爲是一個正確的事情嗎?它是否不會引入任何可能影響功能和結果使用的不明顯行爲,並可能被認爲是不可取的?這個問題有沒有更好的做法?如果在Scala中需要一個不可變數組,那麼返回IndexesSeq而不是Array是否正確?
4
A
回答
4
這可以被認爲是一個正確的事情嗎?
是的。
它不引入任何不明顯的行爲,可能會影響功能和結果的使用,並可能被認爲是不受歡迎的嗎?
不,我不知道。
這個問題有沒有更好的做法?
如果可能,儘量不要使用數組,除非當然性能是最重要的。
4
我能想到的唯一可能非顯而易見的事情是array.toIndexedSeq
不像Java的Collections.unmodifiable*
方法那樣在數組本身上創建一個簡單的包裝,而是將這些元素複製到一個新的集合中。 (否則後面的數組更改可能會導致「不可變」序列突然變異)。
相關問題
- 1. 爲什麼document.querySelectorAll返回一個StaticNodeList而不是真正的Array?
- 2. 如果一個數是不是素數那麼就需要通過
- 3. 遞歸函數Scala中返回,而不是INT一個單位
- 4. 需要Excel公式返回「是」 /「否」,而不是布爾
- 5. std :: multimap :: equal_range是否有可能返回不正確的結果?
- 6. WebMethod正在返回變量名稱,而不是數組
- 7. scaladoc爲什麼說HashMap.toArray返回Array [A]而不是Array [(A,B)]?
- 8. 如果返回會話ID,那麼servicestack是否仍然需要「基本xxx」?
- 9. 在Ruby中,如果「global_variables.class」返回「Array」,那麼如何判斷global_variables是數組還是方法?
- 10. 你如何返回一個數組,而不是一個對象
- 11. Doctrine2 - 如何返回一個對象,而不是一個數組
- 12. 表達式返回List而不是Array
- 13. RequireJS:需要一個模塊返回一個函數,而不是一個對象
- 14. springboot jackson返回數組而不是正確的json對象
- 15. 不確定是否mysql_fetch_array返回結果
- 16. natcasesort($ array)返回布爾值而不是數組?
- 17. 如何返回數組而不是FirebaseListObservable
- 18. 如果狀態是不可變的,那麼整個狀態是否會隨着變化而被替換?
- 19. scala /火星地圖返回一個數組而不是單個值
- 20. 如何讓map函數返回一個值而不是數組?
- 21. 是否有可能在Codeigniter中返回多個變量/數組?
- 22. 是否有可能在Python中解壓一個元組而不創建不需要的變量?
- 23. 如果我不需要發回任何數據,那麼服務器是否可以處理更多請求?
- 24. 不確定我是否需要一個組或其他東西
- 25. NSUserDefaults總是返回1而不是正確的整數
- 26. this.props.dispatch()。那麼是不是一個函數
- 27. 數組返回一個字符串,而不是一個對象
- 28. Tensorflow tf.sigmoid()返回一個數組而不是一個標量
- 29. Scala:是否需要處理元組返回值的臨時變量?
- 30. 如果用一系列高值而不是低值計算浮點數,那麼浮點數是否更精確?
當然,非顯而易見的是Java的行爲。 :-)好吧,Java返回一個「只讀」版本,而不是一個不可變的版本。 – 2012-02-07 00:03:08
「只讀」和不可變的,@ daniel-c-sobral有什麼區別? – Ivan 2012-02-08 03:23:33
@伊萬,不可變的集合不支持變異。另一方面,只讀集合只是可變集合的不可修改視圖。請參見#1014行[此處](http://www.docjar.com/html/api/java/util/Collections.java.html)。 – missingfaktor 2012-02-08 09:41:15