我想不介意数字的类型。 所有数字都可以视为Double, 但是我想知道使用数字作为数字的更好的scalaish方式。
这只是一个例子,假设我有以下内容:
val n = 5
val l = List(1,2,3,4,5) grouped (n / 2d).ceil.toInt
有没有办法做到(完全):
val l = List(1,2,3,4,5) grouped (n / 2).ceil
由于“分组”参数的类型不匹配而没有编译错误?
修改
n / 2
部分中的grouped (n / 2).ceil
在另一个示例中可能是函数f
的非整数结果:
grouped f.ceil
它仍然需要类型转换,或者在所有情况下都有一个技巧或设计模式来避免它?
答案 0 :(得分:6)
val l = List(1,2,3,4,5) grouped((n + 1) / 2)
答案 1 :(得分:1)
你可以查看数字库Spire,我相信它有你想要的东西,即将数字视为数字的能力,无论它们是int / double / float /等。
答案 2 :(得分:0)
是一种方法。您可以像这样定义隐式转换:
implicit def double2Int(d: Double): Int = d.toInt
一旦进入范围,它会自动将Double
转换为Int
。但是,不建议这样做,因为您失去了类型安全性。