Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(接口,类)Kotlin:应为成员声明_Kotlin_Interface - Fatal编程技术网

(接口,类)Kotlin:应为成员声明

(接口,类)Kotlin:应为成员声明,kotlin,interface,Kotlin,Interface,课程目标:阅读复习要点和评论,确保分数在0-5分之间 class LimitedReview(val point:Int, val comment:String):Review { if (point<0){ point=0 } if (point>5){ point = 5 } override fun stars(): Int =point override fun info(): String =comment } 错误:(2,5)Kotlin:应为成员声明

课程目标:阅读复习要点和评论,确保分数在0-5分之间

class LimitedReview(val point:Int, val comment:String):Review {
if (point<0){
    point=0
}
if (point>5){
    point = 5
}
override fun stars(): Int =point
override fun info(): String =comment
}
错误:(2,5)Kotlin:应为成员声明 错误:(2,17)Kotlin:冲突重载:public final fun():在LimitedReview中定义的单元,public final fun():在LimitedReview中定义的单元 错误:(2,17)Kotlin:函数声明必须有名称

  • 我可以知道如何更改代码吗
  • 我应该学习哪个主题来避免再次出现同样的错误

  • 谢谢

    创建类时,类的主构造函数中的属性将直接将调用构造函数的值分配给
    属性,并且您不能再修改它

    基本上,该代码:

    class LimitedReview(val point: Int)
    
    与此相同:

    class LimitedReview(point: Int) {
        val point: Int = point // ctor param to property
    }
    

    如果要在将值分配给属性之前执行逻辑,则必须将属性移到构造函数之外,并手动初始化它

    如果您有复杂的逻辑,这可以通过以下方式完成:

    class LimitedReview(point: Int) {
        val point: Int
    
        init {
            if (point < 0) {
                this.point = 0
            } else if (point > 5) {
                this.point = 5
            } else {
                this.point = point
            }
        }
    }
    
    class LimitedReview(point: Int) {
        val point: Int
    
        init {
            if (point < 0) {
                this.point = 0
            } else if (point > 5) {
                this.point = 5
            } else {
                this.point = point
            }
        }
    }
    
    class LimitedReview(point: Int) {
        val point: Int = point.coerceIn(0..5)
    }