Ruby使用数组作为类参数

yqkkidmi  于 2022-10-15  发布在  Ruby
关注(0)|答案(1)|浏览(181)

我在上一堂有一大堆争论的课。我会有其他有类似论点的班级。
我不想重复输入所有的参数。我想做这样的事情:

argList = [arg1, arg2, arg3, ... arg100]

class myClass1
  def initialize(*argList)
    # ...
  end
end

class myClass2
  def initialize(*argList, extraArg1, ...)
    # ...
  end
end

但这不起作用,因为argList的元素是未定义的变量。
那么,有没有办法将数组用作类参数呢?

lyfkaqu1

lyfkaqu11#

ArgList的元素在运行时不是未定义的。如果您注解掉该行,下面的代码运行得很好。


# argList = [arg1, arg2, arg3, ... arg100]

class MyClass1
  def initialize(*argList)
    p *argList
    arg1, arg2, arg3 = *argList
    puts "arg1 = #{arg1}"
    # ...
  end
end

class MyClass2
  def initialize(*argList, extraArg1)
    p *argList
    puts "extraArg1 = #{extraArg1}"
    # ...
  end
end

my1 = MyClass1.new(1,2,3)
my3 = MyClass2.new(4,5,6,7)

@Spickermann的评论仍然有效。任何方法都需要100个命名参数,这会很奇怪。您要传递的“参数”是什么,它只是您要处理的一组内容吗?在这种情况下,只需传入一个数组,而不是拆分数组。它们是表示某个复杂对象的参数吗?在这种情况下,您可能应该考虑创建对象,可能是一个组合对象,并将其传入。也许您想考虑传入一个Hash对象?

相关问题