【发布时间】:2016-10-05 18:41:06
【问题描述】:
我最近开始学习 ruby,我对实例变量、局部变量和类变量感到困惑。所以,我最近编写了代码,它将在 1000 个素数中找到最大的回文数。 代码是:
def prime_large(number)
arr_prime = []
Prime.each(number) do |x|
new_arr_prime = arr_prime.push(x.to_s)
updated = new_arr_prime.select { |y| y.reverse == y }
end
p updated.max
end
p prime_large(1000)
我得到的错误是:
undefined local variable or method `updated' for main:Object (NameError)
我知道 updated 是素数的局部变量,因此我无法在它之外访问它,但我通过将其替换为 @updated 来更改代码,如下所示:
def prime_large(number)
arr_prime = []
Prime.each(number) do |x|
new_arr_prime = arr_prime.push(x.to_s)
@updated = new_arr_prime.select { |y| y.reverse == y }
end
p @updated.max
end
p prime_large(1000)
更改后,我得到了输出:
"929"
"929"
在我的代码中,没有创建我的实例变量 (@updated) 如何工作的类。我对局部变量和实例变量感到困惑。谁能解释一下它们的区别以及它们是如何工作的?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-3.2