val = BigDecimal.new("0")
运行此语句会显示未初始化常量bigdecimal(nameerror)错误。 然后修改为:
require "bigdecimal"
val = BigDecimal.new("0")
没问题。BigDecimal属于Ruby标准库。所以我需要require 'bigdecimal'
吗?
问题:
BigDecimal
在哪里定义的?- 定义文件是什么?我在lib文件夹中没有找到该文件。
val = BigDecimal.new("0")
require "bigdecimal"
val = BigDecimal.new("0")
没问题。BigDecimal属于Ruby标准库。所以我需要require 'bigdecimal'
吗?
问题:
BigDecimal
在哪里定义的?仅仅因为它在Ruby核心中并不意味着它会自动导入到您的程序中。如果加载了所有内容,启动Ruby需要很长时间。
正确的方法是使用require
。为什么?只有在需要时才会加载。
您找不到bigdecimal.rb
的原因是因为它是以C语言编写的,出于性能考虑,它是按需导入的库。
正如@tadman所写:扩展仅在需要时加载,以提高启动时间/内存占用。
您可以在此处找到BigDecimal
https://github.com/ruby/ruby/blob/trunk/ext/bigdecimal/bigdecimal.c和其他一些地方:
在GitHub上搜索文件很容易。只需按“t”键,然后键入“bigdecimal”,您就会看到所有具有此名称的文件。
Ruby
的本地目录中找到它吗? - niaomingjian
Ruby
的目录中。可能是文本文件或二进制文件。也许文件名不是bigdecimal
,但是它是什么呢?此链接 显示其定义在bigdecimal/bigdecimal.c
中。但我没有找到这个文件。 - niaomingjian