Ruby中缺少方法调用的输出参数有多少

Ruby中缺少方法调用的输出参数有多少,ruby,Ruby,我想知道Ruby中调用了多少return参数method\u missing。我想根据函数应该产生多少返回参数来改变函数的行为。我正在寻找与Matlab中的nargout等效的东西。XXX在本例中: class Test def method_missing(method_id, *args) n_return_arguments = XXX if n_return_arguments == 1 return 5 else return 10,

我想知道Ruby中调用了多少return参数method\u missing。我想根据函数应该产生多少返回参数来改变函数的行为。我正在寻找与Matlab中的
nargout
等效的东西。XXX在本例中:

class Test
  def method_missing(method_id, *args)
    n_return_arguments = XXX
    if n_return_arguments == 1
      return 5
    else
      return 10, 20
    end
  end
end

t = Test.new.missing_method # t should now be 5

t1, t2 = Test.new.missing_method # t1 should now be 10 and t2 should now be 20

因为如果有多个参数,
args
变量将是一个
Array
。我们可以直接查看退货。如果它是一个数组,它将响应大小,如果不是,它可能不会响应大小。我们可以使用类或检查类来获取所需的信息

class Test
  def method_missing(method_id, *args)
    n_return_arguments = XXX
    if n_return_arguments == 1
      return 5
    else
      return 10, 20
    end
  end
end

XXX = "anything but 1"
t = Test.new.this_nonexistent_method # => 5
puts "t = #{t.inspect}"

XXX = 1
t1, t2 = Test.new.this_nonexistent_method.size # => 2
puts "t1 = #{t1.inspect}, t2 = #{t2.inspect}"
使用XXX值更改方法的行为


返回值总是一个值,有时一个数组包含多个元素。

Ruby中没有多个返回值。方法总是只返回一个值。再也不会了。永远不会少。

谢谢,但我正在查找返回而不是输入参数的数量。我把问题改为返回而不是输出。啊,那部分很简单。在Ruby中,一个方法始终只能返回一次(并且它将始终返回)。它可能是一个返回的数组,也可能是一个散列,您可以得到它的大小,但它始终只返回一次,并且始终是一次,而不是多次。为了根据您的并行赋值进行澄清,当发生这种情况时,您将获取数组的元素并将它们赋给每个变量。尽管如此,我想知道返回数组是要解包到另一侧的一个变量中,还是要解包到多个变量中。似乎这些信息是不可能找到的。编辑答案以解决这个预期的问题。作为对你上述评论的直接回答,我的评论就在上面。只是想澄清一下。我根本不在乎输入参数的数量。我编辑了问题中的代码,试图澄清我在寻找什么。
n\u output\u arguments=args.size
是我在答案的早期修订版中编写的代码。这是代码“你可能希望我写”。它确实依赖参数来获取有关其预期行为的提示。我之前删除了我的回复,因为我不确定您在寻找什么。但是在看到下面的讨论之后,我觉得这是我所认为的,所以这里是最初的回答:你想用Ruby做什么是不可能的。Ruby方法无法知道如何或在何处使用方法调用的返回值。因此,你没有办法完成你想做的事情。你别无选择,只能用其他方法解决这个问题。谢谢卡斯珀!如果你发布一个简短的回答,我很乐意接受。有没有真正的使用案例?我从未觉得有必要做这样的事。