Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
В модуле
ModulenestingМетод экземпляра
Module#ancestorslist = Array.ancestors# [Array, Enumerable, Object, Kernel]Метод
constantslist = Math.constants # ["E", "PI"]Метод
class_variablesincluded_modulesclass Parent @@var1 = nilendclass Child < Parent @@var2 = nilendlist1 = Parent.class_variables # ["@@var1"]list2 = Array.included_modules # [Enumerable, Kernel]Методы
instance_methodspublic_instance_methodsClassprivate_instance_methodsprotected_instance_methodstruefalsen1 = Array.instance_methods.size # 121n2 = Array.public_instance_methods.size # 121n3 = Array.private_instance_methods.size # 71n4 = Array.protected_instance_methods.size # 0n5 = Array.public_instance_methods(false).size # 71В классе
Objectmethodspublic_methodstrueprivate_methodsprotected_methodssingleton_methodsclass SomeClass def initialize @a = 1 @b = 2 end def mymeth # ... end protected :mymethendx = SomeClass.newdef x.newmeth # ...endiv = x.instance_variables # ["@b", "@a"]p x.methods.size # 42p x.public_methods.size # 41p x.public_methods(false).size # 1p x.private_methods.size # 71p x.private_methods(false).size # 1p x.protected_methods.size # 1p x.singleton_methods.size # 1Если вы работаете с Ruby уже несколько лет, то заметите, что эти методы немного изменились. Теперь параметры по умолчанию равны
truefalse11.3.9. Просмотр стека вызовов
Иногда необходимо знать, кто вызвал метод. Эта информация полезна, если, например, произошло неисправимое исключение. Метод
callerKerneldef func1 puts caller[0]enddef func2 func1endfunc2 # Печатается: somefile.rb:6:in 'func2'Строка имеет формат «файл;строка» или «файл;строка в методе».
11.3.10. Мониторинг выполнения программы
Программа на Ruby может следить за собственным выполнением. У этой возможности есть много применений; интересующийся читатель может заглянуть в исходные тексты программ
debug.rbprofile.rbtracer.rbИнтересно, что этот фокус реализован целиком на Ruby. Мы пользуемся методом
set_trace_funcset_trace_func
