变量a
未在insert
方法的范围内定义。
有几种类型的红宝石变量,它们可以通过the following table来概括:
$ A global variable
@ An instance variable
[a-z] or _ A local variable
[A-Z] A constant
@@ A class variable
为了使您的代码工作,你既可以定义a
作为一个全局变量(虽然这通常被认为是不好的做法):
$a = [1,2,3,4,5]
puts "Pick number to insert into array:"
answer = gets.chomp()
def insert(answer)
$a.insert(1, answer)
end
insert(answer)
或者,你可以在方法的范围内定义a
:
puts "Pick number to insert into array:"
answer = gets.chomp()
def insert(answer)
a = [1,2,3,4,5]
a.insert(1, answer)
end
insert(answer)
或者,你可以通过a
到方法的参数:
puts "Pick number to insert into array:"
answer = gets.chomp()
def insert(a, answer)
a.insert(1, answer)
end
a = [1,2,3,4,5]
insert(a, answer)
或者,你可以定义一个类,使a
该类的实例变量 - 例如,类似:
class HelloWorld
attr_reader :a
def initialize
@a = [1,2,3,4,5]
end
def insert(answer)
@a.insert(1, answer)
end
end
puts "Pick number to insert into array:"
answer = gets.chomp()
my_awesome_object = HelloWorld.new
my_awesome_object.insert(answer)
puts my_awesome_object.a
在你的第三个例子中,你说或者,你可以传入一个方法作为参数: 这就是我正在做的,它不工作。 – arsenalist
在你的原始代码中,你似乎有我的类型或省略的东西:什么是“答案”?那应该和'a'一样吗?如果没有完整的功能代码,我无法重现您的问题。 –