val = BigDecimal.new("0")
Запуск этого утверждения показывает неинициализированную константу bigdecimal (nameerror).uninitialized constant bigdecimal (nameerror)
Затем изменения в:
require "bigdecimal"
val = BigDecimal.new("0")
Это нормально. BigDecimal относится к стандартной библиотеке Ruby. Так мне нужно require 'bigdecimal'
?
Вопрос:
- Где
BigDecimal
определяется? - Какой файл определён? Я не нашел файл в папке lib.
Даже если он написан на C, должен быть файл в каталоге 'Ruby'.A текстовый файл или двоичный файл. Может быть, имя файла не является' bigdecimal', однако что это такое? [Эта ссылка] (https : //ruby-doc.org/stdlib-2.2.5/libdoc/bigdecimal/rdoc/BigDecimal.html) показывает, что он определен в 'bigdecimal/bigdecimal.c'. Но я не нашел этот файл. – niaomingjian
_ «Просто потому, что он в ядре Ruby не означает, что он автоматически импортируется» _ - это звучит запутанно, поскольку «ядро» обычно относится к [Core API] (http://ruby-doc.org/core/) классы _are_ автоматически импортируются, в отличие от [Standard Library API] (http://ruby-doc.org/stdlib/), откуда приходит «BigDecimal». – Stefan
Здесь есть место для лучшей формулировки. Я говорю «ядро», как в основных библиотеках в комплекте с Ruby, но вы правы, это технически стандартная библиотека Ruby. – tadman