Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > yamlライブラリ > YAMLモジュール > add_builtin_type
add_builtin_type(type_tag) {|type, val| ...} -> nil
[permalink][rdoc]yaml.org,2002ドメインに属しているクラスをYAMLに追加し そのクラスを見つけたときの操作を指定します。
require 'yaml' str1=<<EOT --- !ruby.yaml.org,2002/Rational 5/6 EOT str2=<<EOT --- !yaml.org,2002/Rational 3/4 EOT p YAML.load(str1) #=> #<YAML::DomainType:0x2b07528 @type_id="Rational", @domain="ruby.yaml.org,2002", @value="5/6"> p YAML.load(str2) #=> #<YAML::DomainType:0x2b0767c @type_id="Rational", @domain="yaml.org,2002", @value="3/4"> YAML.add_builtin_type("Rational"){|type, val| md = val.split(/\//) Rational.new!(md[0].to_i, md[1].to_i) } p YAML.load(str1) #=> #<YAML::DomainType:0x2b06fec @type_id="Rational", @domain="ruby.yaml.org,2002", @value="5/6"> ## 前回と変化なし rt = YAML.load(str2) p rt # => Rational(3, 4) p rt + 0.25 # => 1.0