如果变量和方法名称具有相同的范围,Ruby如何区分它们?

时间:2016-11-04 19:55:14

标签: ruby

如果两者具有相同的名称和相同的范围,Ruby如何区分变量和方法之间的差异?

鉴于情景:

def something 
"33"
end

something = "44"

something # --> calling something (variable or method?)

我很困惑,因为两者都被称为某事。我的问题是两部分:

A)哪个会胜出:变量或方法以及为什么?

B)Ruby有没有办法区分两者,所以你可以调用某些东西(变量)和某些东西(方法)?

1 个答案:

答案 0 :(得分:3)

变量将是第一个,但您可以调用方法:

array.push({id: i})

问题

  

为什么?

@SergioTulentsev给出了一个很好的答案:

  

局部变量优先于无括号方法调用,否则无法引用变量

此外,有关方法和变量的更多信息,请阅读here