Ruby: Назовите метод для дальнейшего определения? - PullRequest
4 голосов
/ 12 марта 2012

Я пытаюсь написать небольшой скрипт ruby, который будет иметь два метода (TrySlot и LookAtCut).Каждый метод должен иметь возможность вызывать другой метод.Когда ruby ​​выполняет синтаксический анализ первого метода, происходит сбой, поскольку он не понимает имя второго метода, поскольку я еще не определил его.

Итак, как мне сказать ruby, есть методназывается TrySlot, который я определю позже, чтобы я мог назвать TrySlot в моем определении для LookAtCut?

1 Ответ

6 голосов
/ 12 марта 2012

Причиной возникновения проблем является то, что Ruby обычно принимает все имена, начинающиеся с заглавной буквы, как константы. Однако это также позволит вам определять методы с именем, начинающимся с заглавной буквы. Происходит следующее:

  • Ruby видит def LookAtCut и правильно определяет метод с именем LookAtCut
  • Внутри LookAtCut Руби видит TrySlot, предполагает, что это константа, пытается найти ее и завершается ошибкой, поскольку она не была определена.

Решение состоит в том, чтобы не использовать имена методов, начинающиеся с заглавных букв. Затем вы можете использовать метод, который еще не был определен внутри другого:

def a
  b
end

def b
  puts "Hello!"
end

a #=> "Hello!"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...