在 Ruby 中,如何只为一个特定方法参数设置值,而对其他参数仅使用默认值?

问题描述 投票:0回答:1
此类的

Th

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
ruby class methods
1个回答
0
投票

您可以使用可选的关键字参数

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://www.ombulabs.com/blog/ruby/learning/methods-arguments-ruby-part2.html

© www.soinside.com 2019 - 2024. All rights reserved.