سؤال

على سبيل المثال ، في Python ، يمكنني أن أفعل أشياء مثل هذا إذا أردت الحصول على جميع السمات على كائن:

>>> import sys
>>> dir(sys)
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_getframe', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'gettrace', 'hexversion', 'maxint', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'py3kwarning', 'pydebug', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoptions']

أو إذا كنت أرغب في عرض وثائق شيء ما ، يمكنني استخدام وظيفة المساعدة:

>>> help(str)

هل هناك أي طريقة للقيام بأشياء مماثلة في روبي؟

هل كانت مفيدة؟

المحلول

بالتأكيد ، إنها أبسط من Python. اعتمادًا على المعلومات التي تبحث عنها ، جرب:

obj.methods

وإذا كنت تريد فقط الأساليب المحددة لـ OBJ (على عكس الحصول على الأساليب Object أيضًا)

obj.methods - Object.methods

كما هو مثير للاهتمام هو القيام بأشياء مثل:

obj.methods.grep /to_/

للحصول على متغيرات المثيل ، قم بذلك:

obj.instance_variables

وللمتغيرات الفئة:

obj.class_variables

نصائح أخرى

إذا كنت تريد جميع الطرق التي يمكنك الاتصال بها على شيء من الاستخدام

>>> x.methods

إذا كنت تريد بعض معلومات المساعدة ، فاتصل بالمساعدة قبل فصلها

>>> help x.class

المساعدة هي غلاف ل RI داخل IRB.

إذا كان لديك كائن ، وتريد أن تعرف ما هي الطرق التي تستجيب لها ، فيمكنك التشغيل obj.methods (وجميع الحيل التي ذكرها thenduks في هذه النتيجة.)

إذا كان لديك فصل ، يمكنك الجري klass.methods لمعرفة أساليب الفصل المتاحة ، أو يمكنك تشغيلها klass.instance_methods لمعرفة الطرق المتوفرة في مثيلات تلك الفئة. klass.instance_methods(false) مفيد ، لأنه يخبرك ما هي الأساليب التي تم تحديدها من قبل الفصل وليس موروثة.

هناك الآن طريقة للحصول على نص مساعدة لطريقة داخل روبي بالطريقة التي يفعلها Python.

هناك وحدة تسمى ObjectSpace والتي يتم تضمينها في كل كائن تم إنشاؤه في روبي. إنه يحمل جميع الطرق التي تساعدك على إدخال السياق الحالي للعملية. في IRB تبدأ في Object:Main السياق وهو سياق المستوى الأعلى لجلسة IRB الحالية. ثم يمكنك أن تفعل شيئًا مثل time = Time.now ثم افعل irb time الذي سيأخذك إلى سياق ذلك الكائن ويمكنك فحصه من الداخل دون الاتصال ObjectSpace طرق على هذا الكائن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top