Tag: 局部变量

Ruby local_variables返回:符号?

我正在浏览ruby Kernel doc并看到了这个方法: a = 2 local_variables # => [:a, :_] 为什么会回归:a而不是? 我认为“:”是为符号保留的,但是符号:a不指向变量a也不指向它的赋值,2。 此外,我将如何通过此方法访问实际变量? 如在b = local_variables.first(将是2,但是:a)。 这种行为背后有原因,它是什么? 谢谢/

local,instance和class变量之间有什么区别?

可能重复: 类变量和类实例变量之间的区别? 在阅读Ruby书时,我似乎错过了变量篇。 现在我似乎无法理解以下事情: 什么是实例变量? 什么是类实例变量? variable @instance_var和@class_instance_var之间有什么区别? 我试着阅读不同博客中的一些post,但我仍然不明白。 任何帮助,将不胜感激。

其他条件中的变量假定为零值

这是我在ruby 1.9.3中想到的奇怪之处。 这是代码: >> r = true >> if r >> a = “hello” >> else >> b = “hello” >> end 现在a的值是“你好”: >> a => “hello” 奇怪的是, b的值是零 >> b => nil 由于b在场景中无处可去,因此应该是未声明的。 为什么?

如何在Ruby中列出局部变量?

def method a = 3 b = 4 some_method_that_gives # [a, b] end

你什么时候需要将参数传递给`Thread.new`?

在线程外部定义的局部变量似乎从内部可见,因此Thread.new的以下两个用法看起来是相同的: a = :foo Thread.new{puts a} # => :foo Thread.new(a){|a| puts a} # => :foo 该文件给出了一个例子: arr = [] a, b, c = 1, 2, 3 Thread.new(a,b,c){|d, e, f| arr << d << e < [1, 2, 3] 但由于a , b , c在创建的线程内部是可见的,因此它也应该与: arr = [] a, b, c = 1, 2, 3 Thread.new{d, e, […]

从表示局部变量的字符串中获取值

我有一个本地变量名称作为字符串,需要获取其值。 variable = 22 “variable”.to_variable? 如何从字符串中获取值22 ?

NameError:undefined – 在Ruby 2.1.2中更改了局部变量的解析规则吗?

我得到NameError: undefined local variable or method使用ruby 2.1.2的NameError: undefined local variable or method 正如在这个问题中观察到的,表达式如: bar if bar = true 引发未定义的局部变量错误(假设事先未定义bar ),因为解析器在分配之前会读取bar 。 而且我相信这个表达与以前没有区别: bar if bar = false 两者之间的区别在于主体是否被评估,但是如果遇到未定义的局部变量,则在评估条件之前立即引发错误并不重要。 但是当我在Ruby 2.1.2上运行第二个代码时,它不会引发错误。 它之前是这样吗? 如果是这样,那么解析讨论的内容是什么? 如果没有,Ruby规范是否已更改? 有没有提到这个? 它在1.8.7,1.9.3等中做了什么?

条件“if”修饰符中的Ruby变量赋值

我有一个关于Ruby解释器如何分配变量的问题: 我经常使用这个: return foo if (foo = bar.some_method) some_method返回一个对象或nil。 但是,当我尝试这个: return foo if (true && (foo = bar.some_method)) 我得到:NameError:未定义的局部变量或方法foo for main:Object。 导致第二行出错的第一行和第二行之间的评估有何不同?

Ruby:方法莫名其妙地被覆盖并设置为nil

如果我执行这个ruby代码: def foo 100 end p defined?(foo), foo if false foo = 200 end p defined?(foo), foo 我得到的输出是: “method” 100 “local-variable” nil 有人可以向我解释为什么在不执行if后foo被设置为nil ? 这是预期的行为还是ruby?

在Ruby中,为什么在启动irb之后,foo.nil? 说未定义的错误,@ foo.nil? 给出“真实”和@@ wah.nil? 再次出错?

在Ruby 1.8.7和1.9.2中也是如此: $ irb ruby-1.8.7-p302 > foo.nil? NameError: undefined local variable or method `foo’ for # from (irb):1 ruby-1.8.7-p302 > @bar.nil? => true ruby-1.8.7-p302 > @@wah.nil? NameError: uninitialized class variable @@wah in Object from (irb):3 为什么实例变量的处理方式与局部变量和类变量不同?