我得到一个NameError,据说可以表明我的数组"五角形"未定义。但如果我没有在第1行中定义它,我就是一个猴子的叔叔。我忘记/误解了什么?目标是编写一个方法,告诉我给定的数字是否是五边形。
pentagonals = []
def pent?(num)
pentagonals.include?(num)
end
(1..1000).each {|i|
pentagonals << (i * (3 * i - 1) / 2)
}
puts pent?(1)
答案 0 :(得分:2)
Ruby中的全局变量与初始addPreferencesFromResource
的所有其他程序名称(如常规变量,类名,方法名称,模块名称等)不同,因此您应该以这种方式更改程序:
$
请注意,应该谨慎使用全局变量,事实上它们很危险,因为它们可以从程序中的任何位置写入。
答案 1 :(得分:0)
方法中的变量是方法范围的局部变量,除非它们作为参数传入。
该方法还可以访问同一范围内的全局变量,类变量和其他方法。
class MyClass
# calling methods in the same class
def method1
method2
end
def method2
puts 'method2 was called'
end
# getter / setter method pair for class variables
# @class_variable is only accessible within this class
def print_class_variable
puts @class_variable
end
def set_class_variable(param)
@class_variable = param
end
# global variables can be accessed from anywhere
def print_global_var
puts $global_variable
end
def self.some_class_method
# cannot be directly accessed by the instance methods above
end
end
请注意,不建议使用全局变量,因为它们很容易导致冲突和歧义。
class Dog
$name = "Dog"
end
class Cat
$name = "Cat"
end
puts $name
# which one does $name refer to?