Part9:キーワードリスト

海未「それではキーワードリストですが・・・言葉で説明するのは、少しややこしいです。ですから、まずはコードを見てみましょう」

[{:umi, 2}, {:rin, 1}, {:nozomi, 3}]

希「これって・・・タプルのリストやん?」
海未「そうです。最初の要素がアトムになっているタプルのリスト、というのが定義なのですが、いずれも既知の概念ですからコードを見た方が早いかと」
凜「特別な書き方があるわけじゃないの?」
海未「省略記法ならあります」

[umi: 2, rin: 1, nozomi: 3]

海未「凜なら分かりますね?」
凜「あ~っ!この前のマップといっしょにゃ!」
海未「キーと値のペアを管理するという意味では、キーワードリストはマップと似ているんです」
希「なんか見えてきたで。リストだから、順序があるんやろ?」
海未「そうです。省略記法を使っても、あくまでタプルのリストですから。リストに対して行える操作はキーワードリストにも使えます。例えば・・・」

[umi: 2, rin: 1, nozomi: 3] ++ [nico: 3, maki: 1, eli: 3]   # => [umi: 2, rin: 1, nozomi: 3, nico: 3, maki: 1, eli: 3]
length [umi: 2, rin: 1, nozomi: 3]    # => 3

凜「おー、まんまリストにゃ」
海未「マップのような要素アクセスもできます」

[umi: 2, rin: 1, nozomi: 3][:rin]    # => 1

海未「ただし、性能特性はリストと同じですから、マップとの使い分けはちゃんと考えないといけませんね」
希「ランダムアクセス向きではないんやね」

海未「マップに使える関数、リストに使える関数、どちらもキーワードリストに使えます」

Dict.size [umi: 2, rin: 1, nozomi: 3]      # => 3
Dict.keys [umi: 2, rin: 1, nozomi: 3]      # => [:umi, :rin, :nozomi]
List.reverse [umi: 2, rin: 1, nozomi: 3]   # => [nozomi: 3, rin: 1, umi: 2]
List.last [umi: 2, rin: 1, nozomi: 3]      # => {:nozomi, 3}

凜「lengthでもsizeでも要素数取れるとかもうなんでもありにゃ」
希「性能だけ気を付ければ、便利に使えそうやね」

海未「これで、主なデータ型については一通り終わりましたね」
希「boolean」
海未「え?」
希「booleanを忘れてる気がしてきたん」
海未「・・・では、それを次回に」
希「せやな。じゃ、次回は論理演算と比較演算にしよか」


LINEで送る
Pocket


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">