您好,是否可以像在python中那样在Kotlin函数中传递范围?我刚刚开始学习Kotlin,但是我有点卡住了
我希望我能像
my_gauge = Gauge('test_name',1..200, 201..300, and etc.)
例如我有一个可以在基座上旋转的Gauge对象
class Gauge(val gauge_name: String,
val red_value: Float,
val orange_value: Float,
val yellow_value: Float,
val green_value: Float,
var current_value: Float,
val min_value: Float,
val max_value: Float) {
val gauge_green = 0xFF66C2A5.toInt()
val gauge_yellow = 0xFFFDD448.toInt()
val gauge_orange = 0xFFF5A947.toInt()
val gauge_red = 0xFFD53E4F.toInt()
val min_rotation: Int = 0;
val max_rotation: Int = 300;
val ratio = max_rotation / max_value;
fun calculate_rotation(): Int {
return (current_value * ratio).toInt()
}
fun get_color(): Int {
if (current_value >= red_value) {
return gauge_red
}
if (current_value > orange_value) {
return gauge_orange
}
if (current_value > yellow_value) {
return gauge_yellow
}
return gauge_green
}
}
我刚刚意识到它将无法使用此数据,而是围绕范围构建我的逻辑会更好
所以我的问题是如何将范围作为参数传递给类/函数(而不是浮点数)
PS:该功能get_colors
不正确,一旦可以通过when(current_value)
语句传递范围,我将对其进行修复
是的,由产生的范围类型..
是ClosedRange<T>
:
fun foo(floatRange: ClosedRange<Float>) {
println(floatRange.random())
}
// Usage:
foo(1f..10f)
对于整数范围,您可能会更喜欢IntRange
,ClosedRange<Int>
因为通过使用first
和last
而不是start
和,它可以让您使用它而不会降低装箱性能endInclusive
。没有其他号码类型的拆箱版本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句