我想将变量中的字符串从方法传递给另一个类。我有这段代码:
class A
def method_a
variable = "some string"
B.method_b(variable)
end
end
class B
def self.method_b(parameter)
puts parameter
end
end
此代码生成以下错误:
Undefined local variable or method `variable`
我做错了什么?
答案 0 :(得分:2)
您在此处定义的是一种实例方法,只能在B实例上运行:
class B
def self.class_only(v)
puts "Class: #{v}"
end
def instance_only(v)
puts "Instance: #{v}"
end
end
class_only
方法不需要实例:
B.class_only(variable)
instance_only
方法必须对实例进行操作:
b = B.new
b.instance_only(variable)
现在通过参数给出B方法的任何内容都是有效的,A方面的任何本地或实例变量都是可以提供给调用的东西。这里没有范围问题,因为你明确地传递了它们。
例如:
class A
def test
variable = SecureRandom.hex(6)
B.class_only(variable)
end
end
A.new.test