最近我碰到這樣的代碼:將下劃線指定給變量。下劃線是幹什麼的?
var myVariable: variableKind = _
這似乎是分配給null
一個myVariable
方式。
任何人都可以解釋在這種情況下_
背後的理由嗎? 將_
和null
分配給變量有什麼區別?
最近我碰到這樣的代碼:將下劃線指定給變量。下劃線是幹什麼的?
var myVariable: variableKind = _
這似乎是分配給null
一個myVariable
方式。
任何人都可以解釋在這種情況下_
背後的理由嗎? 將_
和null
分配給變量有什麼區別?
它將變量初始化爲默認值 - 該值取決於類型。對於數字類型,這是布爾值的zero
,false
,()
的值爲Unit
,對於類型爲AnyRef
的值爲null。
因此,在簡而言之,這種語法是未初始化的java字段的替代品嗎? 'var x:int = _' - >'int x;','var y:Integer' - >'Integer y;'? –
@AnthonyAccioly,是的,它通常用於這個,因爲你不能在Scala中有未初始化的變量/ val。 –
分配的值取決於聲明的類型。如果您的「variableKind」擴展了AnyRef,則默認值(對於任何對象)爲null。對於數字類型它是零等。
僅供參考我已經擴展您的問題:http://stackoverflow.com/questions/22364677/difference-between-underscore-initialization-of-var-and-val –