Ruby:将相同的参数传递给类内的多个方法

标签 ruby

很抱歉,如果这个问题太基础了。 比如说,我在同一个类中有 5 个方法。 当我调用每个方法时,我需要传递相同的参数。 有没有办法简化这一点并避免重复?

class Class1
        def method1(arg1, arg2, arg3)
                puts arg1, arg2, arg3
        end
        def method2(arg1, arg2, arg3)
                puts arg1, arg2, arg3
        end
        def method3(arg1, arg2, arg3)
                puts arg1, arg2, arg3
        end
        def method4(arg1, arg2, arg3)
                puts arg1, arg2, arg3
        end
        def method5(arg1, arg2, arg3)
                puts arg1, arg2, arg3
        end
end

obj1 = Class1.new

obj1.method1(1, 2, 3)
obj1.method2(4, 5, 6)
obj1.method3(7, 8, 9)
obj1.method4(10, 11, 12)
obj1.method5(13, 14, 15)

提前致谢!

最佳答案

使用构造函数可能会有帮助:

class MyClass

  def initialize(arg1, arg2, arg3)
    @arg1, @arg2, @arg3 = arg1, arg2, arg3
  end

  def method_one
    puts @arg1, @arg2, @arg3
  end

  def method_two
    puts @arg1, @arg2, @arg3
  end

end

my_obj = MyClass.new(1,7,13)
my_obj.method_one  #=> 1 7 13 
my_obj.method_two  #=> 1 7 13

您还可以使用 Struct 更加简洁:

MyClass = Struct.new(:arg1, :arg2, :arg3) do

  def method_one
    puts arg1, arg2, arg3
  end

  def method_two
    puts arg1, arg2, arg3
  end

end

my_obj = MyClass.new(1,7,13)
my_obj.method_one  #=> 1 7 13 
my_obj.method_two  #=> 1 7 13
puts my_obj.arg2   #=> 7

关于Ruby:将相同的参数传递给类内的多个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58346770/

相关文章:

ruby - 如果用户自过去 15 分钟以来未处于事件状态,如何注销用户 devise activeadmin

ruby - 如何打包 Ruby 应用程序?

ruby - 有没有办法像在 Ruby 中一样在 coffescript 中注入(inject)哈希?

javascript - 在没有 Asset Pipeline 的情况下在 Rails 中渲染 Javascript

ruby-on-rails - 未初始化的常量 CarrierWave::Video

javascript - 我可以使用Ajax切换div吗?

ruby - 连接表时如何嵌套哈希数据集

javascript - 在单选按钮选择上提交 Rails 表单

ruby-on-rails - rails 生成器 : generate files based on already existing rails files

android - 如何在connectedDebugAndroidTest运行之前和之后运行脚本