Essential ActionScript 3.0 読書メモ 第22回 論理演算子

ActionScriptの論理演算子には、「 || 」と「 && 」と「 ! 」がある。

|| は論理和(OR)を表す。||で結ばれたテスト条件のいずれか1つでもtrueであれば、式全体としてtrueを返す。
例:

true || true // true
true || false // true
false || true // true
false || false //false
false || false || true // true

1番目と2番目の例では、左側の時点でtrueが確定するので、右側の真偽判定は行わない(短絡評価)。

Boolean型以外の値が与えられた場合、ActionScriptはまずその値をBooleanに変更する。その後、真偽判定を行い、真となった値を返す。
例:

0 || “hi” // 数値(Number)の0はfalseに変換されるため、”hi”が返る
“hey” || “dude” // いずれもtrueに変換されるため、先に評価される”hey”が返る
false || 5 + 5 // 10

&& は論理積(AND)を表す。&&で結ばれたテスト式の全てがtrueである場合に、trueを返す。
例:

true && true // true
true && false // false
false && true // false
false && false // false

それ以外の点(短絡評価、Boolean型以外の値が与えられた際の振る舞い)は||と同様である。

! は否定(NOT)を表す。式の真偽を反転させる。
例:

!true // false
!false // true

今日の進捗:383→402/4343

Essential ActionScript 3.0 読書メモ 第21回 do-whileループとforループ

do-while文は、次のように書く。

do {
    codeBlock
} while (testExpression)

while文との違いは、do-while文では必ず1回はcodeBlockが実行されることである。

for文は、次のように書く。

for (iterator initialization; testExpression; iterator update) {
    codeBlock
}

for文の括弧の中では、イテレーターの初期化、テスト式、イテレーターの更新、の3つをまとめて書くことができる。
例:

var pow = 2;
for (var i = 0; i < 3; i++) {
     pow = pow * 2;
}
trace(pow); // 8

同じ処理のwhileでの例:

var pow = 2;
var i = 1;
while ($i < 3) {
    pow = pow * 2;
    i++;
}
trace(pow); // 8

for文は処理の面ではwhile文と同等だが、初期化と更新をまとめて書くので、イテレーターの初期化を忘れたり、更新を忘れたりといったミスを防ぐことが出来る。

今日の進捗:376→383/4343

Essential ActionScript 3.0 読書メモ 第20回 whileループ

ActionScriptには、5種類のループがある。while, do-while, for, for-in, for-each-inである。このうち、while, do-while, forは一般的なループであり、for-inとfor-each-inはダイナミックインスタンスにアクセスするために用いられるループである。

while文は次のように書く。

while (testExpression) {
    codeBlock
}

while文では、testExpressionの値がtrueである間、codeBlockに書かれた処理が繰り返し実行される。
例:

var total = 2;
var counter = 0;

while (counter < 2) {
    total = total * 2;
    counter = counter +1;
}

この例では、counterが2になるまで、すなわち2回コードブロックが実行され、結果としてtotalの値は8、counterの値は2になる。

なお、実際に階乗の計算を行いたい場合、ループではなく Math.pow()を利用すべき。
例:

Math.pow(2, 3); // 8(2の3乗)

以下、ループによって文字列に「@」が含まれているかを判定するサンプルプログラム。

var address = “me@mock.org”;
var isValidAddress = false;
var i = 0;

while (i < address.length) {
    if (address.charAt(i) == “@”) {
        isValidAddress = true;
        break;
    }
}

Stringクラスのlengthというインスタンス変数には、文字列の長さが入っている。
例:
“a”.length // 1
“123”.lenght // 3

StringクラスのcharAt()メソッドは、文字列から該当する順番の文字を取り出して返す。
例:
“abc”.charAt(0) // “a”
“123”.charAt(1) // “2”

ループは通常、テスト条件がfalseになった場合に終了するが、break文が実行されると、そこでループは終了する。

“me@mock.org”には、3番目に@が含まれているので、このコードを実行した際のisValudAddressの値はtrueになる。

今日の進捗:338→376/4343

Essential ActionScript 3.0 読書メモ 第19回 条件文、if文

・条件文

条件文(conditional)は、特定の条件に合致した場合にのみ実行される種類の文(statement)である。ActionScriptにおいて、条件文にはif文とswitch文の2種類がある。また、3項演算子(?:)もサポートされている。

・if文

if文は次のように書く。

if (testExpression) {
  codeBlock1
} else {
  codeBlock2
}

textExpressionには式を書く。式の値がtrueであればcodeBlock1に書いた処理、falseであればcodeBlock2に書いた処理が実行される。testExpressionの値がBoolean型でない場合、ActionScriptは自動的にtestExpressionをBooleanオブジェクトに変換し、その結果を条件判断に利用する。

条件に対応するブロックが1つだけで良い場合(codeBlock2が不要な場合)は、

if (testExpression) {
  codeBlock
}

テスト条件を2パターン以上用意したい場合は、

if (testExpression1) {
  codeBlock1
} else if (testExpression2) { // 「else」と「if」の間にはスペースが必要。「elseif」は構文エラー。
  codeBlock2
} else if (testExpression3) { // 以下、いくつでも条件を設定可能。
  …
}

と書く。

・String型の比較においては大文字・小文字が区別される。

・ActionScriptでは、文字列(String)の連結には「+」演算子を用いる。
例:
var e = “Essential “;
var num = 19;
var title = e + “ActionScript  ” + num ;  // “Essential ActionScript 19”

文字列(String)と数値(Number等)が+演算子で結ばれた場合、ActionScriptは+を連結演算子と解釈し、連結を行う。この性質は思わぬ結果を招くことがあるので注意が必要。
例:
var a = “12”; // 文字列の”12″
var b = 34; // 数値の34
var c = a + b; // cに入るのは46(数値)ではなく、”1234″(文字列)

今日の進捗:318→338/4343

Essential ActionScript 3.0 読書メモ 第18回 メソッドのシグネチャ

・シグネチャ

オブジェクト指向プログラミングについての議論や文書において、メソッドの名前とパラメーターのリストはメソッドのシグネチャ(signature、署名)と呼ばれることがある。ActionScriptにおいて、メソッドのシグネチャはそれぞれのパラメーターの型とメソッドの戻り値も含む。

今日の進捗:308→316/4343

今日でChapter1:ActionScript from the Ground Upが終了。オブジェクト指向プログラミングの初歩から基本を積み上げていく解説で、ためになりました。明日からはChapter2:Conditionals and Loops。