このクラスのparent_classインスタンス変数のデフォルト値は「String」です。 parent_class = “None” のインスタンスを作成したいと考えています。 super_string1 インスタンス定義は正しく機能しますが、super_string2 インスタンスは機能しません。 super_string2 宣言の何が間違っているのでしょうか?
class SuperString < String
def initialize(str,id_num = 0,parent_class = "String")
super(str)
@id_num = id_num
@str_length = str.length
@creator = "Me"
@parent_class = parent_class
end
attr_accessor :id_num, :str_length, :creator, :parent_class
end
super_string1 = SuperString.new("world", 0, "None")
puts super_string1.parent_class
super_string2 = SuperString.new("world", parent_class = "None") # This one doesn't work right
puts super_string2.parent_class
このコードの出力は次のとおりです。
None
String
オプションのキーワード引数を使用できます
class SuperString < String
def initialize(str, id_num: 0, parent_class: "String")
super(str)
@id_num = id_num
@str_length = str.length
@creator = "Me"
@parent_class = parent_class
end
attr_accessor :id_num, :str_length, :creator, :parent_class
end
super_string1 = SuperString.new("world", id_num: 0, parent_class: "None")
super_string1.parent_class
super_string2 = SuperString.new("world", parent_class: "None")
super_string2.parent_class
super_string3 = SuperString.new("world")
super_string3.parent_class
"None"
"None"
"String"
https://translate.google.com/translate?hl=ja&sl=en&tl=ja&u=https://www.ombulabs.com/blog/ruby/learning/methods-arguments-ruby-part2.html