Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Java開発者のためのCurl言語講座(制御文)
10-28-2011, 02:38 PM, (This post was last modified: 10-28-2011, 02:42 PM by hokada.)
#1
Java開発者のためのCurl言語講座(制御文)
今回は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
}

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

Forum Jump:


Users browsing this thread:
1 Guest(s)

MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: 'mybb_threadviews' (errno: 2)
Query:
INSERT INTO mybb_threadviews (tid) VALUES('317')