元Webデザイナー兼コーダーの備忘録

HTML,CSSの入門記事やブログのカスタマイズについてアウトプットしています。

 メニュー

【YAML入門】アンカーとエイリアス

同じ値が複数回登場する場合に、「アンカー(&)」と「エイリアス(*)」を使います。アンカーは変数のようなもので、値に名前を付けます。値に変更があっても、アンカー部分の値を変更するだけで良くなるので便利です。なお、この記事はドットインストールというプログラミング学習サービスの内容を参考にしています。

作成するファイル

  • parse.rb
  • data.yml:データファイル

ファイルをそれぞれ以下のように作成します。

# parse.rb
require 'yaml'

emails = YAML.load_file('data.yml')

p emails
# data.yml
- tanaka
- tanaka
- sato
- sato
- sato
- sato
- sato

以下のコマンドで出力を確認します。

ruby parse.rb
["tanaka", "tanaka", "sato", "sato", "sato", "sato", "sato"]

アンカーとエイリアス

データファイルをアンカーとエイリアスを使った記法に書き換えます。エイリアスとは、別名のことです。

- &leader tanaka # アンカー
- *leader # エイリアス
- &staff sato
- *staff
- *staff
- *staff
- *staff

以下のコマンドで出力を確認します。

ruby parse.rb
["tanaka", "tanaka", "sato", "sato", "sato", "sato", "sato"]

友人関係を管理したい場合を考える

例えば、以下のようなデータがあったとします。

- name: hoge
  score: 80
- name: fuga
  score: 90
- name: hatena
  score: 100

ここに友人関係を追加すると以下のようになります。

- &hoge
  name: hoge
  score: 80
- &fuga
  name: fuga
  score: 90
  friends:
    - *hoge
- name: hatena
  score: 100
  friends:
    - *hoge
    - *fuga
ruby parse.rb
[{"name"=>"hoge", "score"=>80}, {"name"=>"fuga", "score"=>90, "friends"=>[{"name"=>"hoge", "score"=>80}]}, {"name"=>"hatena", "score"=>100, "friends"=>[{"name"=>"hoge", "score"=>80}, {"name"=>"fuga", "score"=>90, "friends"=>[{"name"=>"hoge", "score"=>80}]}]}]

まとめ

アンカーとエイリアスを使うと値が変更しやすくなりました。また、複雑なデータを簡潔に記述できることが分かりました。

参考サイト