2017-05-31 110 views
1

我正在从官方文档学习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 
    } 
} 

我有这个类,现在我要创建这个类的一个对象像

val sum = Sum(1,2) 
Log.d("Sum", sum.add()) 

我收到此错误Sum类:

属性的getter和setter方法预期

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

+1

阅读https://kotlinlang.org/docs/reference/basic-syntax.html –

回答

3

您正在为您的班级编写不必要的代码。

如果只有一个,请写下constructor的缩写。

如果在类属性,它们可以在constructor通过使用valvar定义。

使用它像以下:

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

    fun add(): Int { 
     return a + b 
    } 
} 

务必阅读的KotlinBasic Syntax

4
var a: Int, b: Int; 

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

var a: Int 
var b: Int 

改为。 Kotlin的人只是发现了“int a,b,...”的C/java练习,他们希望在Kotlin中支持而不是

+0

变量必须被初始化。这个语句会有编译时错误。 – chandil03

+0

尝试把你的代码放在IDE中,你会知道的。它给编译时错误'必须初始化属性'。 – chandil03

+0

我正在使用Android Studio 3.0和最新的kotlin 1.1.2-4,它给出了上面提到的编译时错误。 – chandil03

1

下面的代码展示了如何在你的类

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

    fun add(): Int= a + b //you can return the results directly. 
} 

分配和操纵变量,你可以使用下面的主要测试代码。

fun main(args: Array<String>) { 
    var s= Sum(1,2) 

    print(s.add()) 
} 
4

你就迎刃而解了简单声明的变量在两行错误:

var a: Int 
var b: Int 

然而,整合在构造函数中这些变量(如果你只是想有一个构造函数的推荐方法与参数):

class Sum(var a: Int, var b: Int) { 
    fun add(): Int = a + b 
} 
相关问题