目次前のトピック次のトピックこのページ |
構造の制御¶Zephir はC、PHPなどと似た言語にある構造を制御する簡易化セットを実装します。 条件¶If 文¶‘if’ 文は表現を評価し、もし評価がtrueであれば、この続きを実行します。波括弧は強制で、‘if’ は任意の ‘else’ 句を持つことができ、複数の ‘if’/’else’ 構成が一緒に繋げられるかも知れません: if false {
echo "false?";
} else {
if true {
echo "true!";
} else {
echo "neither true nor false";
}
}
‘elseif’ 句も利用可能です: if a > 100 {
echo "to big";
} elseif a < 0 {
echo "to small";
} elseif a == 50 {
echo "perfect!";
} else {
echo "ok";
}
評価される表現内の丸括弧は任意です: if a < 0 { return -1; } else { if a > 0 { return 1; } }
Switch 文¶‘switch’ は事前定義された一連の文字値に対して表現を評価し、対応する ‘case’ ブロックを実行するか、‘default’ ブロックのケースを最後の拠り所にします。 switch count(items) {
case 1:
case 3:
echo "odd items";
break;
case 2:
case 4:
echo "even items";
break;
default:
echo "unknown items";
}
ループ¶Loop 文¶‘while’ に加えて、‘loop’ は無限ループを生成するために使われるかも知れません: let n = 40;
loop {
let n -= 2;
if n % 5 == 0 { break; }
echo x, "\n";
}
For 文¶‘for’ は配列あるいは文字列を横断することができる制御構造です: for item in ["a", "b", "c", "d"] {
echo item, "\n";
}
ハッシュ内のキーは以下の方法で取得することができます: let items = ["a": 1, "b": 2, "c": 3, "d": 4];
for key, value in items {
echo key, " ", value, "\n";
}
‘for’ ループは配列あるいは文字列を逆順に横断するように伝えることもできます: let items = [1, 2, 3, 4, 5];
for value in reverse items {
echo value, "\n";
}
‘for’ は文字列変数を横断するために使うことができます: string language = "zephir"; char ch;
for ch in language {
echo "[", ch ,"]";
}
逆順: string language = "zephir"; char ch;
for ch in reverse language {
echo "[", ch ,"]";
}
数値の範囲を横断する標準的な ‘for’ は以下のように書けます: for i in range(1, 10) {
echo i, "\n";
}
使用していない変数についての警告を避けるために、変数名をプレースフォルダ “_” で置き換えることで ‘for’ 文内で匿名変数を使うことができます: // キーを使うが値を無視する
for key, _ in data {
echo key, "\n";
}
Break 文¶‘break’ は現在の ‘while’, ‘for’ あるいは ‘loop’ 文の実行を終了します: for item in ["a", "b", "c", "d"] {
if item == "c" {
break; // exit the for
}
echo item, "\n";
}
Continue 文¶‘continue’ は現在のループの繰り返しの残りをスキップし、条件の評価と次の繰り返しの始めから実行を続けるために、ループ構造内で使われます。 let a = 5;
while a > 0 {
let a--;
if a == 3 {
continue;
}
echo a, "\n";
}
Require¶‘require’ 文は特定のPHPファイルを動的にインクルードし評価します。Zephirを通じてインクルードされるファイルは通常のPHPファイルと同様にZend Engineによって解釈されることに注意してください。‘require’ はランタイム内の他のzephirファイルをインクルードすることができません。 if file_exists(path) {
require path;
}
Let¶‘Let’ 文は変数、プロパティおよび配列を変化するために使われます。変数はデフォルトでは不変で、この指示はそれらを変更可能にします: let name = "Tony"; // 単純な変数
let this->name = "Tony"; // オブジェクトのプロパティ
let data["name"] = "Tony"; // 配列のインデックス
let self::_name = "Tony"; // 静的なプロパティ
また、この指示は変数をインクリメント/デクリメントするために使われるべきです: let number++; // 単純な変数をインクリメント
let number--; // 単純な変数をデクリメント
let this->number++; // オブジェクトのプロパティをインクリメント
let this->number--; // オブジェクトのプロパティをデクリメント
1つの ‘let’ 演算の中で複数の変更が可能です: let price = 1.00, realPrice = price, status = false;
|