繁体   English   中英

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

[英]Scala - generate Array of bytes based on range

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

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 James的 答案足够正确, 但是对于任何类型T都有一个更通用的范围,对于该类型,存在Intergral[T]NumericRange

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM