2007年 02月 19日

はるぴったん

ちょーかわいいなぁ

かっこいいロゴ作れるようになりたいなぁ。

AS3 の undefined

型指定されていない変数のみに値 undefined を割り当てることができます。値 undefined をデータ型が指定されている変数に割り当てようとすると、Flash Player は値 undefined をそのデータ型のデフォルト値に変換します。Object データ型のインスタンスのデフォルト値は null です。つまり、undefined を Object インスタンスに割り当てようとすると、Flash Player は値 undefined を null に変換します

http://livedocs.adobe.com/flex/2_jp/docs/00001826.html

へー……

var num:Number;
var str:String;
var obj:Object;
var foo:*;

log(num, str, obj, foo);
#[Number NaN]
#[null null]
#[null null]
#[void undefined]
// Object に代入していたのを変えた。
package {
	import flash.utils.*;
	import flash.external.ExternalInterface;

	public function log(... args):void {
		for (var i:uint = 0; i < args.length; i++) {
			var className:String = getQualifiedClassName(args[i]);
			var l:String    = <>#[{className} {String(args[i])}]</>.toString();
			trace(l)
			ExternalInterface.call("console.log", l);
		}
	}
}

今はとりあえず上のやつを log.as で保存して他にファイルから import log; してる。package 名どうするのがいいんだろう。

type はいちおう予約語だから使わないほうがいいぜってせかんどらいふさんに言われたので log 関数をちょっと変えた

import log; しなくても動くよ!っていわれた! なんでだろう。

package 名

なんかテンパってるなぁ。net.lowreal.hoge みたいに Java っぽく書くのがいいのかなぁ。

ホイスト

ブロックレベルのスコープがないということは、関数が終了する前に変数が宣言されていれば、宣言される前に変数の読み書きが可能であるということです。これは、"ホイスト" と呼ばれる手法によるもので、コンパイラによりすべての変数宣言が関数の最上位に移動されます。たとえば、次のコードは、num 変数が宣言される前に num 変数の初期の trace() 関数が実行されてもコンパイルされます。

trace(num); // 出力 : NaN
var num:Number = 10;
trace(num); // 出力 : 10

しかし、コンパイラは代入ステートメントをホイストしません。このため、num の初期の trace() は数値データ型の変数のデフォルト値である NaN (非数) になります。つまり、次の例に示すように、変数が宣言される前でも変数に値を割り当てることができます。

num = 5;
trace(num); // 出力 : 5
var num:Number = 10;
trace(num); // 出力 : 10
http://livedocs.adobe.com/flex/2_jp/docs/00001822.html

ホイスト (hoist) っていうんだ。でも "変数 ホイスト" で検索してもこのドキュメントぐらいしかヒットしない。

anthy mac-uim

なんか辞書がよくないっぽくて「被写界深度」とかさえ一発変換できないのでかえてみようと思ったけどうまくいかなかった
/Library/Anthy/share/anthy/anthy.dic をそこらで公開されているやつに置換してみたのだけど、変換されなくなってしまった。うーん。自力でコンパイルしないとだめなのかなぁ。