2013-05-01 29 views
1

我想解決(可能)微不足道的問題。我想要一個很好,簡潔的方式來基於範圍實例化字節數組。到目前爲止,這個工程斯卡拉 - 基於範圍生成字節數組

Array(1 : Byte, 2 : Byte) 

,但我想用某事像

((1: Byte) to (10: Byte)).toArray 

這是一篇Array[Int]

回答

3

Range不是通用的;它繼承自IndexedSeq[Int],所以無法制作「Byte」的「Range」。 (編輯:請參閱Daniel C. Sobral對通用範圍類型的回答!)

當您嘗試((1: Byte) to (10: Byte))時,Byte將再次隱式轉換回Int

如何:

(1 to 10).map(_.toByte).toArray 

這將導致兩個越過集合;如果這是一個問題,一個非嚴格的觀點整頓認爲:

(1 to 10).view.map(_.toByte).toArray 
+0

好極了,正是我需要的 - 感謝 – Bober02 2013-05-01 14:36:23

3

雖然Ben Jamesanswer是真的不夠,一個更通用的範圍,任何類型的T對此有一個Intergral[T]NumericRange

import scala.collection.immutable.NumericRange 
NumericRange(1: Byte, 10:Byte, 1: Byte).toArray 

另一種選擇是將結果數組映射到字節而不是映射範圍。例如,使用一個Array方法:

Array.range(1, 10).map(_.toByte) 
+0

+1,我注意到'NumericRange',因爲我是寫一個答案,但沒有調查不夠! – 2013-05-01 15:12:26