新手问题 Ruby 里面算是 “一切皆对象” 么?

msl12 · 2016年09月14日 · 最后由 dailyzhou 回复于 2016年09月15日 · 2744 次阅读

发现写了一段时间的 ruby,对这个问题尚存疑惑.. 😄

我只知道 JS 算

是的,Ruby 没有 primitive 类型,proc 也是 Object,method 也是 Object

1.is_a? Object
#true

proc = -> {puts 1}
proc.is_a? Object
#true

class String
  def -(s)
    self.gsub(s, '')
  end
end
"abc".method(:-).is_a? Object
#true

代码块也是对象么?

#1 楼 @gothic JS 才不算呢,Java 算。

除了 block 不是对象,不过这个已经不重要了。

#6 楼 @gyorou a block is just part of the syntax of a method call #5 楼 @FrankFang 面向对象虽然是 Java 的核心设计,但是 Java 和“一切皆对象”相去甚远,Java 的数据类型分为内置数据类型引用数据类型

There are eight primitive types in Java ——“core java”

Integer 是对象,但是 int 就是 int。

#3 楼 @msl12 可以转化成 Lamda 和 Proc 等对象提供调用

primitive 和 object 并没有什么明确的界限,immutable 的 object 就是 primitive,而一切都是对象的含义就是 everything is mutable,同时也意味着永远传递引用

除了代码块 都是对象 代码块 可以 转换成 Proc 或 Lambda 对象

书上看来的…

需要 登录 后方可回复, 如果你还没有账号请 注册新账号