Ama*_*dan 38
取决于你所说的"一切".Fixnum正如其他人所证明的那样.类也是类的实例Class.方法,运算符和块不是,但可以用objects(Proc)包装.简单的任务不是,也不可以.这样的陈述while也不是也不可以.评论显然也属于后一组.
大多数实际上重要的东西,即你想要操纵的东西,都是对象(或者可以包裹在对象中).
是的。Fixnum是一个类,它继承自Integer,继承自Numeric,最后继承自Object。
或者,你为什么不直接问?:)
1.is_a? Object # => true
1.class # => Fixnum
Fixnum.is_a? Object # => true
Run Code Online (Sandbox Code Playgroud)
实际上,Ruby 中的所有内容都是对象,除了控制结构。无论方法、代码块或运算符是否是对象,它们都被表示为对象,并且可以被认为是对象。
以代码块为例:
def what_is(&block)
puts block.class
puts block.is_a? Object
end
> what_is {}
Proc
true
=> nil
Run Code Online (Sandbox Code Playgroud)
或者对于方法:
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..."
Run Code Online (Sandbox Code Playgroud)
运算符(如 +、-、[]、<<)作为方法实现:
class String
def +
"I'm just a method!"
end
end
Run Code Online (Sandbox Code Playgroud)
对于第一次接触编程的人来说,这在实际意义上意味着可以应用于一种对象的所有规则都可以扩展到其他对象。您可以将字符串、数组、类、文件或您定义的任何类视为其行为方式大致相同。这就是 Ruby 比其他语言更容易学习和使用的原因之一。