2016-12-22 4 views
1

タイプをタイプInt32のage属性で定義し、それが提供されない場合のデフォルト値を指定します。 私は最初のいずれかを実行する方法を知っている:デフォルトの属性と属性のタイプの両方を設定します

class Person 

    def initialize(@age : Int32) 

    end 

end 

と第二1:

class Person 

    def initialize(@age = 0) 

    end 

end 

ではなく、両方を行う方法。これは可能ですか?

答えて

4

これは比較的最近追加された機能であり、ドキュメントには記載されていないようです。これはその方法です。

class Person 
    def initialize(@age : Int32 = 0) 
    end 
end 

デフォルトでは、タイプはデフォルト値と同じであることが暗黙指定されています。例:

class Person 
    def initialize(@age = 0) 
    end 
end 

Person.new("a") 
Error in line 6: instantiating 'Person:Class#new(String)' 
in line 2: instance variable '@age' of Person must be Int32, not String 
関連する問題