预计在Kotlin的财产获取者或者设定者

N S*_*rma 6 java android kotlin

我正在Kotlin从官方文档中学习,我正在尝试创建一个类来进行算术运算.

class Sum {

    var a: Int, b: Int;

    constructor(a: Int, b: Int) {
        this.a = a
        this.b = b
    }

    fun add(): Int {
        return a + b
    }
}
Run Code Online (Sandbox Code Playgroud)

我有这个类,现在我想创建这个类的对象

val sum = Sum(1,2)
Log.d("Sum", sum.add())
Run Code Online (Sandbox Code Playgroud)

我在Sum课堂上收到这个错误:

属性getter或setter预期

在线b: int;var a: Int, b: Int;

Gho*_*ica 8

var a: Int, b: Int;
Run Code Online (Sandbox Code Playgroud)

Kotlin不允许在一行中有多个声明.你必须去:

var a: Int
var b: Int
Run Code Online (Sandbox Code Playgroud)

代替.Kotlin人员简单地发现C/java实践中的"int a,b,.."是他们希望在Kotlin中支持的东西.


cha*_*l03 6

您正在课堂上编写不必要的代码。

constructor如果只有一个,则写一个简短的形式。

如果类中有属性,则可以constructor使用val或定义它们var

如下使用它:

class Sum (var a: Int,var b: Int){

    fun add(): Int {
        return a + b
    }
}
Run Code Online (Sandbox Code Playgroud)

请务必阅读基本语法Kotlin


Mar*_*rio 6

您只需将变量声明为两行即可解决错误:

var a: Int
var b: Int
Run Code Online (Sandbox Code Playgroud)

但是,建议的方法是将这些变量集成到构造函数中(如果您只想使用带参数的单个构造函数):

class Sum(var a: Int, var b: Int) {
    fun add(): Int = a + b
}
Run Code Online (Sandbox Code Playgroud)