SHOEISHA iD

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

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

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

ここがポイント!Curlプログラミング
トップレベルとコードブロック

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

コードブロック

 Curl式は、コマンドかコードブロックであると書きました。どちらも、{ } に囲まれています。{ } がコードブロックの範囲かと言うとそうとも限りません。コードを書いていると経験的にはわかってきますが、コードブロックについて具体的な事例で説明します。

 トップレベルでコードブロックを記述するのに利用するvalueマクロのサンプルです。

{curl 7.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}

{value
    || コードブロック開始
    let a:int = 10
    {inc a}
    a
    || コードブロック終了
}

 valueは、トップレベルの式です。その中のインデントされている部分がコードブロックになります。その中で変数のスコープが有効になります。

 if式の例です。

{curl 7.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}

{let a:int = 10}

{if a < 20 then
    || コードブロック開始
    let b:int = a + 10
    set a = b
    || コードブロック終了
 else
    || コードブロック開始
    let b:int = a - 10
    set a = b
    || コードブロック終了
}

a = {value a}

 if式全体が1つのコードブロックなのではなく、thenの後、elseの後で2つのコードブロックが形成されます。この2つに同じ名前の変数を定義してもエラーにならずに利用できます。switch文などでも同様なことが言えます。

 プロシージャ定義の例です。

{curl 7.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}

{define-proc public {pythagoras a:double, b:double}:double
    || コードブロック開始
    let c:double = {sqrt a * a + b * b}
    {return c}
    || コードブロック終了
}

{pythagoras 5, 12}

 プロシージャ定義は、define-procで始まっています。この中はコードブロックです。内部で定義した変数はローカル変数です。

トップレベルの実行順番

 トップレベルで記述されたテキストや式は、上から順番に実行されます。プロシージャなどを定義する場合は、プロシージャを呼び出すコードよりも先にプロシージャが定義されている必要があります。

{curl 7.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}

{define-proc public {pre-proc a:int, b:int}:int
    {return a + b}
}

{pre-proc 1, 2}

{post-proc 3, 4} || エラーになる

{define-proc public {post-proc a:int, b:int}:int
    {return a + b}
}

 実行するとこのような結果(図2)になります。

図2
図2

 前もって定義したプロシージャは呼び出すことができますが、後ろで定義したプロシージャは見つからずにエラーとなります。クラスなどでは、メソッドの位置によって実行できないなどのようなことは発生しませんのでご安心ください。

最後に

 トップレベルとコードブロックについて見てきました。Curlのプログラムを書く場合、独立型アプレットを使ったり、アプレットでもクラスやプロシージャの実装が中心になると思います。結果的に、トップレベルはあまり利用しないのですが、Curlの理解に少しでもお役に立てれば幸いです。

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

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

もっと読む

この記事の著者

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

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング