如何解决具有数字范围类型的mkString行为
有没有办法使mkString与数字范围类型一起工作?
我想制作一个诸如{1-2-3-4-5}
之类的字符串,但范围要大得多。
当我在参数中使用范围定义时,mkString似乎不会产生此输出。想知道为什么会这样吗?
//Desired output
@ Array(1,2,3,4,5).mkString("{","-","}")
res860: String = "{1-2-3-4-5}"
@ Array(1 to 5).mkString("{","}")
res861: String = "{Range 1 to 5}"
@ Vector('a' to 'z').mkString("{","---","}")
res856: String = "{NumericRange a to z}"
解决方法
mkString()
在Range
上可以正常工作。无需中间Array
。
Range(3,23,4).mkString("{","-","}") //res0: String = {3-7-11-15-19}
('b' to 'w' by 3).mkString(":") //res1: String = b:e:h:k:n:q:t:w
Array(1 to 5).mkString(...)
不起作用的原因是,您已经创建了一个元素,即Array
本身的Range
。您已经创建了一个范围数组。难怪mkString()
的输出不是您想要的。
您需要Array(1 to 5: _*)
或Array.range(1,6)
,请注意以下类型:
scala> Array(1 to 5)
res2: Array[scala.collection.immutable.Range.Inclusive] = Array(Range 1 to 5)
scala> Array(1 to 5: _*)
res3: Array[Int] = Array(1,2,3,4,5)
scala> Array.range(1,6)
res4: Array[Int] = Array(1,5)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。