2014-03-12 97 views
4

最近我碰到這樣的代碼:將下劃線指定給變量。下劃線是幹什麼的?

var myVariable: variableKind = _ 

這似乎是分配給null一個myVariable方式。

任何人都可以解釋在這種情況下_背後的理由嗎? 將_null分配給變量有什麼區別?

+0

僅供參考我已經擴展您的問題:http://stackoverflow.com/questions/22364677/difference-between-underscore-initialization-of-var-and-val –

回答

5

它將變量初始化爲默認值 - 該值取決於類型。對於數字類型,這是布爾值的zero,false()的值爲Unit,對於類型爲AnyRef的值爲null。

+1

因此,在簡而言之,這種語法是未初始化的java字段的替代品嗎? 'var x:int = _' - >'int x;','var y:Integer' - >'Integer y;'? –

+0

@AnthonyAccioly,是的,它通常用於這個,因爲你不能在Scala中有未初始化的變量/ val。 –

2

分配的值取決於聲明的類型。如果您的「variableKind」擴展了AnyRef,則默認值(對於任何對象)爲null。對於數字類型它是零等。