1

我正在尝试解决一个(可能)微不足道的问题。我想要一种简洁的方式来根据范围实例化字节数组。到目前为止,这有效

Array(1 : Byte, 2 : Byte)

但我想用 sth like

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

然而,这是Array[Int]

4

2 回答 2

3

Range不是通用的;它继承自IndexedSeq[Int],因此无法创建“ Rangeof Byte”。(编辑:见 Daniel C. Sobral 对通用范围类型的回答!)

当您尝试((1: Byte) to (10: Byte))时,Bytes 会再次隐式转换回Int

怎么样:

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

这将导致两次通过集合;如果这是一个问题,非严格的观点将纠正这一点:

(1 to 10).view.map(_.toByte).toArray
于 2013-05-01T14:34:15.887 回答
3

虽然Ben James的 回答是正确的,但对于任何有:的类型,都有一个更通用的范围。TIntergral[T]NumericRange

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

另一种选择是将结果数组映射到字节而不是映射范围。例如,并使用一种Array方法:

Array.range(1, 10).map(_.toByte)
于 2013-05-01T14:55:34.260 回答