首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要成员声明错误的kotlin getter和setter?

需要成员声明错误的kotlin getter和setter?
EN

Stack Overflow用户
提问于 2021-05-15 09:19:34
回答 1查看 78关注 0票数 1

我开始学习kotlin,但是在实现getter和setter时遇到了问题,我在网上搜索了getter和setter,我的getter和setter的代码与许多向导使用的相同。

代码语言:javascript
运行
复制
package com.test
import kotlin.Int

class Test{

    var name: Int = 10;
    get(){
        println("getting value");
        return field;
    }
    set(value){
        println("setting value");
        field = value;   
    }
}

fun main() {
    val test = Test();
    println(test.name);
}

我看不出这段代码有什么问题使kotlin编译器发出错误。我正在使用kotlinc proj.kt进行编译。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-15 09:29:20

你似乎真的很喜欢添加分号,你试着把它们添加到任何地方。但是,在本例中添加它们太早了:

代码语言:javascript
运行
复制
var name: Int = 10;
get(){
    println("getting value");
    return field;
}
set(value){
    println("setting value");
    field = value;
}

整个过程声明了一个名为name的属性,所以在var name: Int = 10之后不应该有分号。

您错误地添加了分号,使解析器认为name的声明就在那里结束,因此解析器期望在此之后再声明一次。您没有编写另一个声明,而是编写了get() { ...,它只在声明属性时才对解析器有意义,但就解析器而言,此时不声明属性,因为分号已经完成了name的声明。

如果必须添加分号,则在} of set(value)之后,如下所示:

代码语言:javascript
运行
复制
var name: Int = 10
get(){
    println("getting value");
    return field;
}
set(value){
    println("setting value");
    field = value;
};

还请参见属性声明的语法

但是,请注意Kotlin编码约定说,只要有可能,就应该省略分号。,因此您应该省略所有分号,如下所示:

代码语言:javascript
运行
复制
var name: Int = 10
get(){
    println("getting value")
    return field
}
set(value){
    println("setting value")
    field = value
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67545157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档