2017-05-25 70 views
0

對於android中的java類,我們用來在Activity的頂部聲明一個int數組,如int[] intarray; 並創建對象,其中 需要intArray = new Int(size)。如何在kotlin中全局定義arralist

我所知道的是,在科特林使用數組,我需要做的是這樣

val numbers: IntArray = intArrayOf(10, 20, 30, 40, 50) 

我什麼不能做的僅僅是申報對象全局即

val numbers: IntArray 

在科特林我們聲明變量,如val a: Int = 1但如圖基本語法教程它不會讓我只聲明變量像val c: Int並對其進行初始化時required.It給我的錯誤

屬性必須被初始化或抽象

我得到錯誤的聲明部分。因爲它不讓我只定義val numbers: IntArray。有人能告訴我我哪裏出錯了嗎?

回答

1

你不能定義一個未初始化變量不變。這個一個

val numbers: IntArray 

:更改以下行

var numbers: IntArray? = null 

那麼,你可以修改的數字變量值...

+0

由於它的工作:) – Pritish

6

一個val是一個只讀的值,因此具有立即初始化,因爲它只應該設置一次。如果創建Activity當你無法立即初始化數組,你應該讓一個var

這仍然必須進行初始化:你可以,例如,用一個空數組作爲默認值初始化。

var numbers: IntArray = intArrayOf() 

或者,你可以用lateinit關鍵字標記來表明你沒有什麼分配給它,但你知道它,你將使用它的第一次之前被初始化,並且你」再以該責任:

lateinit var numbers: IntArray 

最後,你可以把一個可空IntArray,並與null初始化。在這裏,編譯器會救你訪問它時,它的null,但每次你訪問它時,你將不得不處理的事實,它可能是null

var numbers: IntArray? = null 
+0

哦,需要嘗試lateinit的事情,謝謝大家了詳細的解釋:) – Pritish

1

val是不可變的數據變量(只讀)。請使用var。欲瞭解更多信息閱讀defining local variable

所以,你需要的是:

var numbers: IntArray? = null // This says numbers variable is nullable 

,您可以初始化它,只要你想要的。

+1

代碼不編譯,必須初始化變量 – AlexTa

+0

@AlexTa這是一個錯字,我改變了它。 – chandil03

+0

你還沒有初始化變量 – AlexTa