我想解決(可能)微不足道的問題。我想要一個很好,簡潔的方式來基於範圍實例化字節數組。到目前爲止,這個工程斯卡拉 - 基於範圍生成字節數組
Array(1 : Byte, 2 : Byte)
,但我想用某事像
((1: Byte) to (10: Byte)).toArray
這是一篇Array[Int]
。
我想解決(可能)微不足道的問題。我想要一個很好,簡潔的方式來基於範圍實例化字節數組。到目前爲止,這個工程斯卡拉 - 基於範圍生成字節數組
Array(1 : Byte, 2 : Byte)
,但我想用某事像
((1: Byte) to (10: Byte)).toArray
這是一篇Array[Int]
。
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
雖然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)
+1,我注意到'NumericRange',因爲我是寫一個答案,但沒有調查不夠! – 2013-05-01 15:12:26
好極了,正是我需要的 - 感謝 – Bober02 2013-05-01 14:36:23