Kotlin类中重赋值val属性为何报Expecting member declaration错误
Kotlin
Expecting member declaration 错误原因解析 你遇到的报错是由两个语法规则问题共同导致的:
- Kotlin 类的主体只能放置成员声明(属性、方法、内部类、初始化块等结构),不能直接写独立的执行语句。你在
random类中直接编写的num = 7属于赋值执行语句,不属于合法的类成员声明,编译器在该位置预期读取成员声明代码,因此抛出Expecting member declaration错误。 - 你用
val关键字声明的num是只读属性,本身就不支持二次赋值,即便你把赋值语句放到合法的执行区域,也会触发只读属性不可修改的报错。
如果需要在类初始化阶段修改属性值,可将赋值逻辑放到init初始化块中,同时将val改为支持可变的var,示例代码如下:
fun main(){ val pizza = random() print(pizza.num) } class random{ var num = 5 init { num = 7 } }
内容的提问来源于stack exchange,提问作者DDD
相关产品推荐
相关产品推荐

