Essential ActionScript 3.0 読書メモ 第7回 ローカル変数

ローカル変数(Local variables)は、コンストラクターメソッド、スタティックメソッド、又は関数(function)という枠の中で、一時的にデータを追跡するのに用いる。ここではコンストラクターメソッドの枠内でのローカル変数について書く。

ローカル変数をコンストラクターメソッドの中で作るには、変数定義(variable definition)を行う。変数の宣言にはvarというキーワードを使う。
例:

class SomeClass {
  public function SomeClass () {
    var identifier = value;
  }
}

ここでは、identifierという名前の変数にvalueという値を代入(assign)している。変数の宣言と同時に値を代入することを初期化(initialization)と呼ぶ(初期化を省略するとデフォルト値が自動的に代入される)。

ローカル変数は、それを定義したのと同一のメソッド・関数の中でのみ利用できる。メソッド・関数が終了した際には、その中で定義したローカル変数も利用できなくなる。

今日の進捗:195→200/4343

Essential ActionScript 3.0 読書メモ 第6回 変数とは

ActionScriptでは、全てのオブジェクトは、単独の、自己完結した(self-contained)データである。これを値(value)と呼ぶ。

オブジェクト以外の有効な値としては、nullとundefinedがある。いずれも値が存在しないことを示す。

変数(variable)とは、値を指し示すものである(A variable is an identifier associatid with a value.)。変数は、プログラムの中で情報を追跡するために用いられる。変数によって、オブジェクトを生成した後に、それを参照することができる。

変数には、4つの形態がある。ローカル変数、インスタンス変数、ダイナミックインスタンス変数、スタティック変数である。

今日の進捗:193→195/4343

[PHP]設定はコードより強し

絵文字変換で詰まって、1日費やしました。

絵文字変換のライブラリ(HTML_Emoji)は正しく導入した。コードにもバグは見当たらない。なのに動かない…。

原因は、PHPの設定(php.ini)で文字コードの自動変換(mbstring.encoding_translation)がONになっていることでした。自動変換機能が絵文字を正しく認識できず、誤った文字列に変換していたのです。

mbstring.encoding_translationは、set_ini()では書き換えられなかったので、php.iniを編集して、ようやく動くようになりました(user.iniを作っても良かったかも)。

マルチバイト文字列関係の設定(mbstring.*)には気をつけよう、というのが今日の教訓。

Essential ActionScript 3.0 読書メモ 第5回 package外のクラスへのアクセス

まず、正式なクラス名と非正式なクラス名のおさらい。

正式なクラス名:packageName.ClassName
非正式なクラス名:ClassName

同一package内であれば、クラス名が正式なものでなくても、アクセスは可能である。

しかし、別packageからpublicクラスにアクセスする際は、クラス名は正式なものでなければならない

別packageのpublicクラスにアクセスするには、importディレクティブを使う。
例:

import packageName.ClassName;

いったんimportが済めば、その後は非正式なクラス名でも利用することができる。例えば、組み込みクラスのflash.media.Soundを利用する場合、

import flash.media.Sound
new Sound

といった具合。

クラスをpackageの階層でimportしておけば、そのpackage内のどこでもそのクラスを利用できる(クラス内でimportすれば、そのクラスの中でのみ利用できる)。
例:

package jp.livedoor {
  import flash.media.Sound

  public class Blog {
    public function Blog () {
      new Sound
    }
  }
}

importの結果、同一package内に同一の名前をもつクラスが重複してしまった場合、正式なクラス名を使う必要が生じる。
例:

new flash.media.Sound
new jp.livedoor.Sound

クラス名が重複している際に非正式なクラス名を用いると、コンパイルエラーが発生する。

他のpackageの全てのpublicクラスにアクセスするには、

import packageName.*

と書く。

名前の無いpackage内に書いたクラスは、「無名パッケージ(unnamed package)」という自動的に生成されるpackage内に配置される。無名パッケージ内のクラスは、importなしで利用できる。
例:

package {
  // ここで定義されたクラスは無名パッケージに配置され、プログラムのどこからでも直接利用できる
}

しかし、ベストプラクティスとしては、無名パッケージ内にクラスを定義することは避けるべきとされる。なぜなら、無名パッケージ内のクラス名が他のクラスと重複する恐れがあるからである。

今日の進捗(第4回+第5回):178→193/4343

Essential ActionScript 3.0 読書メモ 第4回 オブジェクトを作る

クラスからオブジェクトを作る(instantiating the object)ためには、newというキーワードをクラス名に組み合わせて使う。
例:

new ClassName // ClassNameという名前のクラスのオブジェクトを作成

この作成方法は、組み込みクラスとカスタムクラスのいずれでも使える。例えば、Dateという組み込みクラスのインスタンスを作る際は、

new Date

と記述する。

さらに、いくつかの組み込みクラスには、より便利なインスタンス化の方法がある(Literal syntax)。例えば、新しいNumberクラス(浮動小数点数)のオブジェクトを作るには、

25.4

と書けばよい。同様に、Stringクラスなら

“hello”

Booleanクラスなら

True
False

といった具合。

Literal syntaxは、Object、Function、RexExp、XMLクラスでも利用できる。