【问题标题】:Dynamic initialization using loops in ruby [closed]在 ruby​​ 中使用循环进行动态初始化 [关闭]
【发布时间】:2014-07-02 12:20:23
【问题描述】:

简单的循环和动态赋值问题,需要建议。

问题:

@var = 1

def meth
 @values = (#here a query uses @var value to calculate and returns some values)
end

meth #calling meth function

# value of @value increaser when i increase @var
# i need to increment @var by 10 each time and have to call meth for @values=10

if @values.lenght < 10
 # Here how can i iterate 
  10.times do |x|
  @var += 10
  meth 
 end
 # calling meth with incremented value @var
end

我不知道如何迭代该方法。

【问题讨论】:

  • 您的预期输出是什么?而你会得到什么?
  • 我应该得到 10 个“@values”。 '@var = 1'的意思,我运行'meth'函数,如果我得到10个'@values',我需要增加'@var'值并再次运行'meth'函数。

标签: ruby loops ruby-on-rails-4 ruby-1.9.3


【解决方案1】:

你必须在使用之前初始化@values,否则它似乎可以工作:

@var = 1
@values = []

def meth
  @values << @var
end

meth

10.times do
  @var += 10
  meth
end

p @values #=> [1, 11, 21, 31, 41, 51, 61, 71, 81, 91, 101, 101]

【讨论】:

  • 是的,我声明了那个数组。但是错过了循环迭代
  • 您必须使用@values &lt;&lt; 而不是@values = 才能将对象添加 到数组中(= 将替换整个数组,这肯定不是你想要什么)
猜你喜欢
  • 2016-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 2022-11-16
  • 2014-07-20
相关资源
最近更新 更多