Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 富<;红宝石条_Ruby - Fatal编程技术网

Ruby 富<;红宝石条

Ruby 富<;红宝石条,ruby,Ruby,我最近发现,您可以检测一个类/模块是否包含另一个类/模块。例如,Array是可枚举的,因此您可以 Array < Enumerable # true 这里到底发生了什么?这个语法在ruby中是如何工作的 这里到底发生了什么?这个语法在ruby中是如何工作的 字符串和数组类继承自类类,该类继承自模块类,如果这两个模块出现在祖先链中,则普通的在该链中的位置适用。如果不是,则返回nil。以下是如何获取类的祖先链: >> Array.ancestors => [Array, E

我最近发现,您可以检测一个类/模块是否包含另一个类/模块。例如,
Array
可枚举的
,因此您可以

Array < Enumerable # true
这里到底发生了什么?这个语法在ruby中是如何工作的

这里到底发生了什么?这个语法在ruby中是如何工作的


字符串
数组
类继承自
类,该类继承自
模块
类,如果这两个模块出现在祖先链中,则普通的
在该链中的位置适用。如果不是,则返回
nil

以下是如何获取类的祖先链:

>> Array.ancestors
=> [Array, Enumerable, Object, Kernel, BasicObject]
如果一个类是祖先链中另一个类的“左”,则<方法返回true,否则返回false:

>> Array < Object
=> true
>> Array < Enumerable
=> true
如果将可枚举模型包括到String类中,它也会返回true

class String
  include Enumerable
end

# Enumerable is now included in String
String < Enumerable #true
<方法的显式语法如下所示:

>> Array.<(Object)
=> true
>> Array.send(:<, Object)
=> true
>数组。真的
>>Array.send(:true)
of在这里是不相关的。它有自己的定义,不依赖于
,您可以通过单击文档中的“查看源代码”看到这一点。
>> Array < Object
=> true
>> Array < Enumerable
=> true
>> Enumerable < Array
=> false
>> Array < Array
=> false
>> Array.ancestors
=> [Array, Enumerable, Object, Kernel, BasicObject]
>> String.ancestors
=> [String, Comparable, Object, Kernel, BasicObject]
class String
  include Enumerable
end

# Enumerable is now included in String
String < Enumerable #true
>> 3 + 4
=> 7
>> 3.+(4)
=> 7
>> Array.<(Object)
=> true
>> Array.send(:<, Object)
=> true