В целях выполнить условную компиляцию, #if и #ifdef [почти 111] то же, но не совсем. Если Ваша условная компиляция будет зависеть от двух символов тогда #ifdef, то не будет работать также. Например, предположите, что у Вас есть два символа условной компиляции, PRO_VERSION и TRIAL_VERSION, у Вас могло бы быть что-то вроде этого:
#if defined(PRO_VERSION) && !defined(TRIAL_VERSION)
...
#else
...
#endif
Используя #ifdef вышеупомянутое становится намного более сложным, особенно заставляя #else часть работать.
я работаю над кодом, который использует условную компиляцию экстенсивно, и у нас есть смесь #if & #ifdef. Мы склонны использовать #ifdef/#ifndef для простого случая и #if каждый раз, когда два или больше символа являются оценкой.
Существует несколько методов:
obj.methods
obj.public_methods
obj.private_methods
obj.protected_methods
obj.singleton_methods
Обновление
Чтобы отделить методы объекта от всех унаследованных методов, вы можете:
obj.methods (false)
As Tempus упомянутые в комментариях, следующая команда очень полезна для получения текущих методов объекта отдельно от унаследованных методов объекта (базового класса):
obj.methods - Object.methods
Вы можете передать true
для методов, если вы хотите игнорировать методы, определенные в суперклассах:
obj.methods(true)
obj.public_methods(true)
obj.private_methods(true)
obj.protected_methods(true)
obj.singleton_methods(true)
Или, если вы хотите удалить только наиболее распространенные методы, определенные в классе Object
, вы хотите добавить либо - Object.methods
, либо - Object.instance_methods
, в зависимости от того, является ли obj
классом или экземпляром класса.
Я также хотел бы отметить, что obj.methods
не возвращает отсортированные имена методов, поэтому вы можете сделать obj.methods.sort
.
Если у вас запущен интерпретатор Ruby,
покажет доступные методы для объекта. В Eclipse, когда я набрал File.
ничего не происходило, пока я не выполнил команду Content Assist (CTRL + пробел). На тот момент я получил список методов.
Вы можете вызвать File.methods
в интерактивном интерпретаторе Ruby, чтобы увидеть все доступные методы. Я не уверен, есть ли какой-то способ в IDE, который вы используете, поскольку я не использовал его раньше.