2017-05-31 85 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 
} 
相關問題