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:BigDecimal:同时是一个类和一个方法?_Ruby_Class_Methods_Callable - Fatal编程技术网

Ruby:BigDecimal:同时是一个类和一个方法?

Ruby:BigDecimal:同时是一个类和一个方法?,ruby,class,methods,callable,Ruby,Class,Methods,Callable,因此,BigDecimal是一个类 但同时,BigDecimal可以像方法一样调用: require bigdecimal BigDecimal.class # => Class 背后的机制是什么?我怎样才能看到BigDecimal是可调用的?如何使自己的类常量可调用?BigDecimal是一个类,但它也是模块中定义的方法 在内核中定义的方法不需要调用接收器,因为内核模块与对象类混合在一起 :内核模块由类对象包含,因此它的方法在每个Ruby对象中都可用 Ruby知道Array。n

因此,
BigDecimal
是一个类

但同时,
BigDecimal
可以像方法一样调用:

require bigdecimal
BigDecimal.class     # => Class

背后的机制是什么?我怎样才能看到
BigDecimal
是可调用的?如何使自己的类常量可调用?

BigDecimal是一个类,但它也是模块中定义的方法

在内核中定义的方法不需要调用接收器,因为
内核
模块与
对象
类混合在一起

:内核模块由类对象包含,因此它的方法在每个Ruby对象中都可用

Ruby知道
Array。new
Array(1)
是不同的东西,因为常量()不接收参数

BigDecimal("42.0")   # => 0.42e2
正如曾经说过的:

我试图让Ruby自然,而不是简单。红宝石外观简单,但内部非常复杂,就像我们的人体一样


因此,通过尝试
方法(:BigDecimal)#=>#
,我可以看到有一个方法
BigDecimal
(除了类
BigDecimal
)。
class Abc
end

def Abc
  puts 'Method called'
end

Abc()
#=> Method called

Abc
#=> Abc (Class)