gpt4 book ai didi

ruby-on-rails - 当你说 Ruby 是反光的时候,这主要是指 "duck typing"吗?

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

我正在阅读一篇描述 Ruby 的文章,它说了以下内容:

Ruby is considered a “reflective” language because it’s possible for a Ruby program to analyze itself (in terms of its make-up), make adjustments to the way it works, and even overwrite its own code with other code.

我对“反射”这个术语感到困惑 - 这主要是在谈论 Ruby 可以查看变量并确定它是整数还是字符串(鸭子类型(duck typing))的方式,例如:

x = 3
x = "three" # Ruby reassigns x to a String type

最佳答案

说 Ruby 是“反射的”意味着你可以,例如,在运行时找出一个类有哪些方法:

>> Array.methods
=> ["inspect", "private_class_method", "const_missing",
[ ... and many more ... ]

(您可以对类的对象执行相同的操作。)

或者您可以找出给定对象是什么类...

>> arr = Array.new
=> []
>> arr.class
=> Array

并找出类层次结构中的内容...

>> arr.kind_of?
>> arr.kind_of? Array
=> true
>> arr.kind_of? String
=> false

在他们所说的“Ruby 程序可以 self 分析”这句话中,他们就是这么说的。

其他语言(如 Java)也这样做,但使用 Ruby 更容易、更方便,并且更像是使用该语言的日常部分。因此,Ruby 是“反射性的”。

关于ruby-on-rails - 当你说 Ruby 是反光的时候,这主要是指 "duck typing"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/546968/

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