Kotlin:将函数范围作为参数传递

雷角

您好,是否可以像在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)语句传递范围,我将对其进行修复

Tenfour04

是的,由产生的范围类型..ClosedRange<T>

fun foo(floatRange: ClosedRange<Float>) {
    println(floatRange.random())
}

// Usage:
foo(1f..10f)

对于整数范围,您可能会更喜欢IntRangeClosedRange<Int>因为通过使用firstlast而不是start和,它可以让您使用它而不会降低装箱性能endInclusive没有其他号码类型的拆箱版本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将数组范围作为参数传递给函数?

来自分类Dev

Google表格脚本-将范围作为函数参数传递

来自分类Dev

将函数作为参数传递

来自分类Dev

将函数作为参数传递

来自分类Dev

将函数作为参数传递给函数

来自分类Dev

将函数作为函数参数传递

来自分类Dev

将函数作为参数传递给函数

来自分类Dev

AngularJS将范围变量名称作为函数参数传递

来自分类Dev

将范围内的枚举作为函数参数传递给另一个

来自分类Dev

将函数作为APL中的参数传递

来自分类Dev

无法将函数作为mixin的参数传递

来自分类Dev

将矩阵作为参数传递给函数

来自分类Dev

Scala:将咖喱函数作为参数传递

来自分类Dev

将命名函数作为参数传递

来自分类Dev

将函数作为参数传递给操作

来自分类Dev

将函数调用作为参数传递

来自分类Dev

将代码作为函数参数传递

来自分类Dev

将函数作为最终参数传递

来自分类Dev

将函数作为参数传递(Lambda)

来自分类Dev

将嵌套函数作为参数传递

来自分类Dev

将多维数组作为函数参数传递

来自分类Dev

将函数作为参数传递并重载

来自分类Dev

将泛型函数作为参数传递

来自分类Dev

将聚合函数作为参数传递

来自分类Dev

将动画函数作为参数传递

来自分类Dev

将类方法作为函数参数传递

来自分类Dev

将数组作为参数传递给函数

来自分类Dev

将函数作为类中的参数传递

来自分类Dev

将javascript函数作为参数传递