gpt4 book ai didi

ruby - "if/unless"等是什么类

转载 作者:数据小太阳 更新时间:2023-10-29 07:10:09 24 4
gpt4 key购买 nike

考虑到 Ruby 中的一切都是对象,我们可以打开 irb 并键入诸如 4.class"Text".class 之类的内容来查看对象来自哪个类就是,为什么if.classunless.class没有返回值?

最佳答案

Considering that everything in Ruby is an object

这取决于您对“对象”和所有“事物”的定义。 “对象”可以表示“可以被程序操作的实体”(从现在开始我将其称为对象),或者“< em>作为对象系统成员的值”(从现在开始我将称之为 Object)。

在 Ruby 中,程序可以操作的所有东西(即每个对象)也是一个Object。 ,即一个类的实例。这与 Java 不同,例如,原语 可以由程序操作(即在这个词的意义上是 对象),但不是 Objects .在 Ruby 中,这种区别不存在:每个 object 都是一个 Object每个Object也是一个对象

但是,语言中有一些东西,它们不能被程序操纵并且不是类的实例,即它们既不是对象 也不是Object秒。例如,这些是方法、变量、语法、参数列表、参数列表、关键字。

注意:您可以使用 Ruby 的反射 API 为您提供一个代表方法或参数列表的对象,但该对象只是一个代理,并不是真正的对象。

所以,当我们说“一切都是对象”时,我们真正的意思是“每个对象都是一个Object”,即所有可以被程序操纵的对象也是对象系统的成员,或者换句话说,对象系统之外没有值(不像 Java 中的原语)。我们不是意味着语言中存在的所有内容也可以在运行时由程序操作。

why do if.class and unless.class give no return value

好吧,首先,即使如果 if 一个对象,但它们并不像您认为的那样:当您说类似 foo 的内容时在 Ruby 中,它意味着“取消引用局部变量 foo”或“调用方法 foo,将 self 作为隐式接收者且没有参数列表”。所以,

if.class

要么给你局部变量引用的对象的类if或方法返回的对象类 if , 但从不 if 的类本身。

但是 if控制流关键字无论如何都不是对象(既不是 对象 也不是 Object ),因为关键字和控制流在 Ruby 中不是对象。

在书中The Ruby Programming Language by Matz and David Flanagan它在第 2 页上说:

every value is an object

请注意,它并没有说每一个事情,只说每个

另见问题 Is variable is object in ruby?

关于ruby - "if/unless"等是什么类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13837722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com