Ruby:从方法参数中检索值

时间:2013-11-14 14:18:02

标签: ruby

我试图弄清楚如何在Ruby中创建一个方法,我可以从方法的参数中检索值,例如字符串/整数。

例如,如果这是用C编码的函数,则可能与此类似:

main()
{
    int value;
    GetAnIntegerValue(value);
    printf("The value is %d", value);
}

// The "value" integer variable is passed to it, and updated accordingly because of the use of the ampersand prior to the parameter
GetAnIntegerValue(&int value)
{
    value = 5;
}

// The output would be "The value is 5"

我认为这个术语是值得传递的,但我不确定。我的想法在这方面有点模糊,我找不到很多不错的结果。

这是我的示例Ruby函数,参数被分配到的数组只是类的本地,这就是这种用法的原因:

    def getRandomWordAndHint(&RandomWord, &RandomHint)
    randIndex = rand(7)
    RandomWord = EnglishLevel1Word[randIndex]
    RandomHint = EnglishLevel1Hint[randIndex]
end

干杯!我

1 个答案:

答案 0 :(得分:2)

Ruby是按值传递的。总是。没有例外。你不能在Ruby中通过引用传递。

可以做什么,将您想要更改的对象放入某种可变容器中:

class MutableCell
  attr_accessor :val

  def initialize(val)
    self.val = val
  end
end

def change_the_value(cell)
  cell.val = 5
end

value = MutableCell.new(42)

change_the_value(value)

value.val
# => 5

当然,您可以使用Array而不是编写自己的MutableCell课程,这只是为了演示。

然而,一般来说,可变状态是一个坏主意,而传递给方法的变异参数尤其是真的坏主意。方法知道他们自己的对象(即self),因此可以安全地修改它,但对于其他对象,这通常是禁止的。