条件语句是Ruby中的对象吗?

时间:2012-01-09 16:43:27

标签: ruby object

Ruby Language - About我们可以找到这句话:

在Ruby中,一切都是对象。每一点信息和代码都可以赋予自己的属性和动作

很难理解限制的位置。我们不能说条件语句是对象,可以吗?如果没有,“每一点信息”在这里意味着什么?

1 个答案:

答案 0 :(得分:3)

这种说法有点夸张。 Ruby中的每个数据项都是 Object (或者更确切地说是Object的后代),而Proc是一些代码的例子,它也是一个对象。但Ruby中有许多概念不是对象,例如关键词,任意陈述等。

但是,完整的语句总是评估到对象中。我认为作者的意图是戏剧性地描述没有值,原始或其他,这些也不是语言中的对象。

# Data items are all objects.
1.class # => Fixnum
(2 ** 64).class # => Bignum
"a".class # => String
{}.class # => Hash
nil.class # => NilClass
lambda {|x| x}.class # => Proc

# Statements, including conditionals, *evaluate* to objects.
(true ? "a" : 1).class # => String
(false ? "a" : 1).class # => Fixnum
(if true; 'a'; else; 1; end).class # => String
(if false; 'a'; else; 1; end).class # => Fixnum
(while true; break; end).class # => NilClass