是一个对象,一切都在红宝石?这包括Fixnum
s吗?一切都是Ruby中的对象吗?
7
A
回答
34
取决于你所说的“一切”是什么。正如其他人已经证明的那样。类也是类Class
的实例。方法,操作符和块不是,但可以用对象包装(Proc
)。简单的任务不是,也不是。像while
这样的声明也不是也不能。后者显然也有评论。
实际上重要的事情,即您希望操纵的东西是对象(或可以包装在对象中)。
0
1
烨。
> Fixnum.is_a?(Object) #=> true
要查看继承链:
> pp Fixnum.ancestors
[Fixnum,
Integer,
Precision,
Numeric,
Comparable,
Object,
...
Kernel]
=> nil
4
是。 Fixnum
是一类,它从Integer
继承,它从Numeric
,其最终从Object
继承继承。
或者说,为什么你不问吗? :)
1.is_a? Object # => true
1.class # => Fixnum
Fixnum.is_a? Object # => true
读Ruby info和documentation在网站上是非常好的方法。
2
红宝石doen't有任何原语(如int,焦炭等在Java),所以每一个值(任何可以坐在赋值语句的右侧)是一个对象。但是,语言语法的控制语句,方法和其他功能不是。
4
实际上一切在Ruby是一个对象,具有控制结构的异常。无论是在方法,代码块还是操作符之下,它们都被表示为对象,并且可以这样认为。
以一个码块,例如:
def what_is(&block)
puts block.class
puts block.is_a? Object
end
> what_is {}
Proc
true
=> nil
或为一个方法:
class A
def i_am_method
"Call me sometime..."
end
end
> m = A.new.method(:i_am_method)
> m.class
Method
> m.is_a? Object
true
> m.call
"Call me sometime..."
和运营商(例如+, - ,[],< <)被实现为方法:
class String
def +
"I'm just a method!"
end
end
对于第一次进入编程的人来说,这是什么意思在ap从逻辑上讲,所有适用于某种对象的规则都可以扩展到其他规则。您可以将您定义的字符串,数组,类,文件或任何类视为以非常相同的方式运行。这是Ruby比其他语言更易于使用和使用的原因之一。
相关问题
- 1. “一切都是对象”是好事吗?
- 2. Ruby中的一切都可以在Rails中使用吗?
- 3. 类或方法定义也是Ruby中的一个对象吗?
- 4. 一切都是计划中的列表吗?
- 5. 类声明是红宝石的洗眼液吗?一切是否都是面向对象的?
- 6. typeof new String(“aaa”)===“object”?一切都是一个对象,但是有原始类型?
- 7. 对象切片,有利吗?
- 8. 对象切片有用吗?
- 9. int是Java中的一个对象吗?
- 10. Objective-C中的所有对象基本都是指针吗?
- 11. 在Javascript中,所有内置对象都是不可变的吗?
- 12. 一切都通过巴士吗?
- 13. 是int []一个对象吗?
- 14. 条件语句是Ruby中的对象吗?
- 15. 在Java中,是一个char []对象吗?
- 16. Heroku一切都是最新的
- 17. 每个比在Ruby中都慢吗?
- 18. 是错误对象切片的原因吗?
- 19. 为什么一切都不是黄金?
- 20. 每一个对象都应该有一个接口,并且所有对象都是松散耦合的?
- 21. 管理类时,一切都是相对于用户在nhibernate(orm)
- 22. 这会导致对象切片吗?
- 23. 从对象中切除一部分
- 24. Ruby中的字典对象
- 25. Ruby中的对象分配
- 26. 每个对象都应该有一个方法'addEventListener'吗?
- 27. 检查是否有键值中的对象都是假的
- 28. 符号是一个案例对象吗?
- 29. 引用类型是一个对象吗?
- 30. JSONRequest是一个全局JavaScript对象吗?
我不认为ruby中的方法可以像对象一样对待。 – 2017-04-18 09:25:54