Scala - 根据范围生成字节数组

时间:2013-05-01 14:19:24

标签: arrays scala byte

我正试图解决(可能)微不足道的问题。我想要一个很好的,简洁的方法来实例化基于范围的字节数组。到目前为止,这是有效的

Array(1 : Byte, 2 : Byte)

但我想使用像......

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

然而Array[Int]

2 个答案:

答案 0 :(得分:3)

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

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

怎么样:

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

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

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

答案 1 :(得分:3)

虽然Ben James answer足够真实, 对于T的任何类型Intergral[T]都有更通用的范围: NumericRange

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

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

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