以下程序打印变量的值。为什么?

时间:2018-06-16 17:31:16

标签: ruby

hello_world = 'Hello Ruby World' 

def hello_world
  'Hello World' 
end

puts hello_world

请解释为什么打印变量的值?

1 个答案:

答案 0 :(得分:4)

如果编译器在同一范围内找到具有相同名称的变量和方法时出现歧义,则它会优先考虑该变量。

要明确调用该方法,请发送空的parens ()

hello_world = 'Hello Ruby World' 

def hello_world
  'Hello World' 
end

puts hello_world()

或提供方法的明确接收者,在这种情况下,使用self

self.hello_world

修改: 正如sepp2k在下面的评论中所建议的,self.hello_world不适用于ruby(.rb)文件。只是尝试一下,您可以使用send

动态调度方法
send(:hello_world) #or
method(:hello_world).call