Ruby:为后面的定义命名一个方法?

时间:2012-03-12 02:21:18

标签: ruby

我正在尝试编写一个包含两种方法(TrySlotLookAtCut)的小ruby脚本。每种方法都需要能够调用另一种方法。当ruby解析第一个方法时,它失败了,因为它不理解第二个方法的名称,因为我还没有定义它。

那么,我如何告诉ruby,我将在稍后定义一个名为TrySlot的方法,以便我可以在TrySlot的定义中调用LookAtCut

1 个答案:

答案 0 :(得分:6)

您遇到问题的原因是Ruby通常假设所有以大写字母开头的名称都是常量。但是,它还允许您定义名称以大写字母开头的方法。发生的事情如下:

  • Ruby看到def LookAtCut并正确定义名为LookAtCut
  • 的方法
  • LookAtCut内,Ruby看到TrySlot,假设它是一个常量,试图找到它并因错误而失败,因为它尚未定义。

解决方案是不使用以大写字符开头的方法名称。然后,您可以使用尚未在另一个中定义的方法:

def a
  b
end

def b
  puts "Hello!"
end

a #=> "Hello!"