2015-09-25 2 views
3

Новичок, проходящий через «Pharo by Example». В книге упоминается пример EllipseMorph new openInWorld, который приводит к вызову Morph openInWorld, а EllipseMorph defaultColor - это переопределенное сообщение: как мне понять это с помощью системного браузера или чего-то еще?Как я могу найти, какой класс реализует метод в Pharo?

Обычный способ поиска способ находит совпадения только в выбранном классе. Можно ли вообще искать, какой класс ответит (скажем) Foo bar?

Обновление: Спасибо за все предложения (Finder, Spotter); отладчик - самое пристальное внимание к инструментам, с которыми я столкнулся!

+2

Я не совсем понимаю ваш метод, но вы можете выбрать имя метода и нажать cmd + m (или ctrl + m на окнах), и он покажет вам всех разработчиков, отображаемых как дерево. – Uko

ответ

4

Smalltalk предлагает множество инструментов и браузеров, которые могут вам помочь. Если вы уже знаете название сообщения, вы можете:

  • использование корректировщик (сдвиг + Введите), чтобы ввести его и увидеть все отправители и исполнителей, и выбрать один, чтобы просмотреть его.
  • при просмотре метода в браузере нажмите на маленькие зеленые треугольники вверх/вниз слева от имени метода, указывающего на реализацию вверх и/или вниз по иерархии, соответственно, чтобы открыть браузер на них.
  • выберите имя сообщения (почти) в любом месте и типа CMD + M, чтобы увидеть I м plementors и CMD + N увидеть как таковые п Ders.

В этом случае можно также ввести EllipseMorph new openInWorld в детскую площадку и выберите Debug-It из меню. Это откроет отладчик с выбором на new. Если вы нажмете на на, верхняя строка изменится на EllipseMorph class(Behavior) new. Это указывает на то, что здесь используется new от Behavior. Если вы продолжите шаг с в (2 раза), вы увидите, что он изменился на EllipseMorph(BorderedMorph) initialize. Просто следуя следам отправленных сообщений, вы можете увидеть, где все реализовано.

4

Чтобы добавить к ответу Стефана (+1), один из самых простых способов, особенно если вы новичок в Smalltalk и предпочитаете использовать графический интерфейс, - это использовать инструмент Finder. Просто щелкните левой кнопкой мыши в любом месте на фоне (эквивалент рабочего стола в вашем Pharo изображения) и выберите Tools > Finder:

Opening the Finder tool in Pharo

Далее введите имя метода, например, openInWorld в поле поиска (убедитесь, что «селекторы» выбран в раскрывающемся списке справа) и нажмите Enter:

Using the Finder tool in Pharo

Вы можете просмотреть все методы, содержащие строку поиска (обратите внимание на это автоматически поиск подстановочных знаков) и классы, реализующие их.Панель внизу показывает выбранные реализации, а в контекстном меню вы найдете еще несколько параметров, например. просматривая выбранный вами класс.

Смежные вопросы