对不起,如果这是太基本的要求。
我在同一个类中有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 - Ruby:将相同的参数传递给类中的多个方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58346770/

10-12 07:39