大家好!我想知道如何在Ruby中使用语法ClassName.method_name
不能调用的方法。我的头顶有些是puts
,print
,gets
, chomp
。这些方法可以在不使用点运算符的情况下调用。为什么是这样?他们来自哪里?我怎么能看到这些方法的完整列表?没有类的Ruby方法?
回答
Kernel
中的所有方法将适用于所有类Object
或Object
派生的任何类。您可以使用Kernel.instance_methods
来列出它们。
他们来自Kernel
模块,每个类自动包含模块。那些
irb(main):001:0> class Foo
irb(main):002:1> end
=> nil
irb(main):003:0> Foo.included_modules
=> [Kernel]
较短:'Class.new.included_modules'。 :-) – 2011-06-06 22:04:04
@chris:绝对:) – xinit 2011-06-06 22:05:07
对不起,但“自动包含”可能会误导,并且不太正确......误导,因为听起来像是包含'Kernel'的操作是由Ruby完成的,但它只是简单的因为新类有'Object'作为祖先,'Object'包含'Kernel'。在'Object'中包含任何其他模块,您将获得相同的效果; 'Kernel'没有什么特别之处。这是不正确的,因为从'BasicObject'分类的类不会包含'Kernel'。 – 2011-06-06 23:22:58
- 1. Ruby:有没有方法attr_initialize的gem?
- 2. 在Elixir中有没有类似ruby的send方法?
- 3. 有没有办法从Ruby中的实例调用私有的类方法?
- 4. Ruby on Rails的没有方法错误
- 5. Ruby:没有块返回的方法
- 6. Ruby:没有多态的当前类的调用方法
- 7. 在Ruby中创建一个没有实例方法的类
- 8. Ruby on Rails:有没有类似于子类的C++虚拟方法?
- 9. Ruby On Rails Model没有方法
- 10. 为什么Ruby没有is_an?方法?
- 11. Ruby中没有方法错误
- 12. LocationListener类没有onLocationChanged()方法?
- 13. AttributeError:WindowSpecification类没有'typekeys'方法
- 14. pywinauto:AttributeError:WindowSpecification类没有'GetProperties'方法
- 15. 从Ruby的类方法调用私有实例方法
- 16. 有没有一种好的方法来测试Ruby中的父类?
- 17. 有没有办法在Python中的类方法中修改类?
- 18. 有没有更好的方法来写这种Ruby的条件?
- 19. 有没有更好的方法来防止Ruby中的负数?
- 20. 有没有办法在Ruby中强制实现接口方法?
- 21. Ruby方法类似attr_reader
- 22. 调用Ruby类方法
- 23. ruby中的类方法语法
- 24. 在Ruby中,类方法和类的单例方法有什么区别?
- 25. C++类的方法调用.cpp没有::
- 26. 没有返回类型的方法: - ()foo
- 27. hive:NoMatchingMethodException没有类的匹配方法
- 28. 在Ruby on Rails中有没有这样做的干净方法
- 29. 在Ruby中有没有与find相反的方法?
- 30. Ruby模块中的私有类(不是类方法)?
非常感谢你:) – Kvass 2011-06-06 22:25:37
不完全正确,因为他们将可用于其类的子类'Obejct'的对象。基于'BasicObject'的类的实例不会有'Kernel'方法。 – 2011-06-06 23:25:49
@ Marc-André:谢谢!纠正。 – 2011-06-06 23:33:36