我正在尝试编写一个包含两种方法(TrySlot
和LookAtCut
)的小ruby脚本。每种方法都需要能够调用另一种方法。当ruby解析第一个方法时,它失败了,因为它不理解第二个方法的名称,因为我还没有定义它。
那么,我如何告诉ruby,我将在稍后定义一个名为TrySlot
的方法,以便我可以在TrySlot
的定义中调用LookAtCut
?
答案 0 :(得分:6)
您遇到问题的原因是Ruby通常假设所有以大写字母开头的名称都是常量。但是,它还允许您定义名称以大写字母开头的方法。发生的事情如下:
def LookAtCut
并正确定义名为LookAtCut
LookAtCut
内,Ruby看到TrySlot
,假设它是一个常量,试图找到它并因错误而失败,因为它尚未定义。解决方案是不使用以大写字符开头的方法名称。然后,您可以使用尚未在另一个中定义的方法:
def a
b
end
def b
puts "Hello!"
end
a #=> "Hello!"