Curl Global Community
Java開発者のためのCurl言語講座(制御文) - Printable Version

+- Curl Global Community (https://communities.curl.com)
+-- Forum: Blogs (https://communities.curl.com/forumdisplay.php?fid=17)
+--- Forum: Tech blog (https://communities.curl.com/forumdisplay.php?fid=18)
+--- Thread: Java開発者のためのCurl言語講座(制御文) (/showthread.php?tid=317)



Java開発者のためのCurl言語講座(制御文) - hokada - 10-28-2011

今回はforやwhile、ifなどの制御文についての説明です。

基本的には、Curl的("{}"とか)に書く必要がありますので見た目は違いますが、機能は類似しています。

<ループ>
では、まずfor文ですが、Javaでは以下のように書きますね。
Code:
List list = new ArrayList();
....
for (int i = 0; i < list.size(); i++) {
  String str = list.get(i);
  ....
}

// または、最近では以下のように書くかもしれません。
for (String str : list) {
  ....
}

では、Curlについては以下のよう。
Code:
def list = {{Array-of String}}
....
{for i = 0 below list.size do
   def str = list[i]
   ....
}

|| もしくは、
{for str in list do
   ....
}

また、while文も同様のものもあります。これは構文的にもほぼ一緒です。
Code:
// Java
while (条件式) {
   // 処理
}

|| Curl
{while 条件式 do
   || 処理
}

if文ですが、これはJavaや他の言語ともあまり変わらないですね。
Code:
// Java
if (条件式) {
   // 処理1
} else if (条件式) {
   // 処理2
} else {
   // 処理3
}

|| Curl
{if 条件式 then
   || 処理1
elseif 条件式 then
   || 処理2
else
   || 処理3
}

但し、switch文はちょっと違います。

Javaですとこんな感じ。
Code:
// Java
switch (式) {
case 要素1:
   // 処理1
case 要素2:
   // 処理2
default:
   // 処理3
}

Curlですとこんな感じで書き方自体は似ています。
Code:
{switch 式
case 要素1 do
   || 処理1
case 要素2 do
   || 処理2
else
   || 処理3
}


|| こんな風にまとめることもできます。
{switch 式
case 要素1, 要素2, 要素3 do
   || 処理1
case 要素4, 要素5 do
   || 処理2
else
   || 処理3
}

ただ、Javaではbreak文を書かなければ、次のcaseをチェックしに行きますが、Curlではbreak文を書くことなく、break文が入っているような動きをします。ここはJavaプログラマーには注意が必要です。

また、Javaでは、式として扱えるのは、intと列挙型とJava7から文字列ですが、Curlでも数量型、列挙型、文字列OKです。それ以外にtype-switch(型により処理を分岐)やplatform-switch(Win32, Mac, Linuxなどにより処理を分岐)という別のswitch文も用意されています。
Code:
{type-switch v
  case t:Foo do
     || vがFoo型のとき
  case t:Hoge do
     || vがFoo型のとき
}

ちなみに、switchとは関係ないですが、型チェックにはisaを使います。Javaでいうinstanceofみたいなものですね。
Code:
{if v isa Foo then
   || do something
}

以上、制御文でした。次回以降はプロシージャやクラスについての説明をしていきたいと思います。