SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

知っておきたいCurl文法の要点(AD)

ここがポイント!Curlプログラミング
コレクション(配列・ハッシュテーブル・セット)の文法

  • このエントリーをはてなブックマークに追加

ハッシュテーブル

 配列では、要素にインデックス番号が付いていてその値で要素を特定してアクセスできました。このインデックス番号の代わりに、任意のキーデータを使って値を保持する仕組みがハッシュテーブルです。

let 変数:{HashTable-of キーの型, 値の型} =
   {{HashTable-of キーの型, 値の型} キー0, 値0, キー1, 値1, ...}

 HashTable-of も、パラメータ化クラスになっています。キーの型と値の型の両方を指定する必要があります。Array-of と同じようにキーと値の型を指定しますので型宣言自身を { } で囲みます。新しいインスタンスを生成する場合は、内側の{ } が型を指定し、外側の { } がインスタンスの生成を表すのも Array-of と同じです。HashTable-of は、値を登録した順番は持つ事ができません。キーと値の組み合わせでデータを保持します。キーはユニークである必要があります。

 次のサンプルでは、キーを文字列、値を整数としたハッシュテーブルを生成し、値の設定、値の取り出しを行っています。

コード6
{curl 7.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}

{value
    let map:{HashTable-of String, int} = {{HashTable-of String, int}}
    {map.set "zero", 0}
    {map.set "first", 1}
    {map.get "zero"}
}

 実行結果は 0 が表示されます。

 値を設定する場合は set メソッドを、値を取得する場合は get メソッドを使います。Array-of の時と同じように [ ] を使った表記も可能です。同じ内容で書き直してみます。

コード7
{curl 7.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}

{value
    let map:{HashTable-of String, int} = {{HashTable-of String, int}}
    set map["zero"] = 0
    set map["first"] = 1
    map["zero"]
}

 ハッシュテーブルでは、キーの有無を確認し、あれば値を取り出すような処理を書くことがよくあります。そのような処理を get-if-exists メソッドを使って効率的に書くことができます。ここでは、Curl言語の複数の値が返せる機能が利用されています。

コード8
{curl 7.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}

{value
    let map:{HashTable-of String, int} = {{HashTable-of String, int}}
    {map.set "zero", 0}
    {map.set "first", 1}
    
    let (value:int, exists?:bool) = {map.get-if-exists "zero"}
    {if exists? then
        value
     else
        "nothing"
    }
}

 実行結果は、0 が表示されます。

表3・HashTable-ofの主なプロパティ
プロパティ 内容
element-type 要素の型
empty? 要素が空か否か
key-type キーの型
size 要素の数
表4・HashTable-ofの主なメソッド
メソッド 内容
clear 全ての要素を削除する
get 指定したキーの要素を返す
get-if-exists 指定したキーの要素があるか否かの判定と値を返す
key-exists? 指定したキーがあるか否か
remove 指定したキーの要素を削除する
set 指定したキーの要素を設定する

次のページ
セット

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
知っておきたいCurl文法の要点連載記事一覧

もっと読む

この記事の著者

久保田 一郎(クボタ イチロウ)

財団法人日本自動車研究所電算システムGr所属。Macintosh HyperCardとOracleを使った業務システムの開発から始まって、4D、Java、AIRを経由してCurl に到達。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4798 2010/01/26 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング