2012-12-01から1ヶ月間の記事一覧
協調動作 スレッドとジェネレータ ジェネレータは yield 文を含む関数。呼び出すとジェネレータが返る yield したらそこで処理が中断される。yield に渡した値がジェネレータの resume から取得できる ジェネレータは resume で再開できる 最初に走りはじめ…
メタメソッド フックメソッドみたいなもの テーブルやクラスに適切なインタフェースで関数を定義しておいて、演算子を評価する時にその関数を実行させる _cmp を定義すると , = 演算子で呼ばれる _add を定義すると + 演算子で呼ばれる クラスオブジェクトに…
今日はコンストラクタから コンストラクタはクラスのメンバ関数に constructor という名前で定義すればよい。引数を指定したらインスタンス化の時に引数を渡せる ここのサンプルコードの説明に「デフォルト引数と関数を引数として渡すコードを含む例」とあり…
クラスのインスタンス作成はクラス名を関数として呼ぶ class C { }; local c1 = C (); インスタンスのもつメンバ変数の初期値はクラス定義時に定義したもの static メンバ変数 - クラスの全インスタンスで共有、するだけでなく変更ができない、定数として使…
今日は時間があまりなくてちょっとだけです クラス定義の構文 class (クラス名) { // メンバ変数の定義 int a = 0; function f() { } }; クラス名は大文字からはじまらないといけないのかな、と思いきや class foo {} でも定義できました。ただの慣習みたい…
配列インデックスは 0 オリジン 配列には異なる型の要素を持てる 配列にドット(".")をはさんで関数を書ける。メソッド呼び出しみたいですね。このドットの両側にも空白を挟むのが慣習みたい len, append, insert, remove, clear, sort, reverse, resize, sli…
関数は「ファーストクラスの値」(Squirrel の公式ドキュメントより) 「配列を内部に保持することができ」という部分はどういう意味でしょうか 「関数は Squirrel 上で、もしくは ANSI C の関数呼び出し規約をもつネイティブコードとして実装することができる…
ほぼ C と同じ(switch 文が break を書かないと fall through するのも一緒)なので細かいメモはしませんでした。 return 文の説明に「関数もしくはジェネレータを終了し」とあるのでジェネレータがあるみたい for 文とは別に foreach 文がある。配列、テーブ…
演算子はだいたい C と同じ + α みたいです 代入演算子(=)、複合代入演算子(+= とか -= みたいなの) 算術演算子(+-*%) インクリメント、デクリメント(++, -- 表 3.4 はデクリメントが - 1つのように見えます) 前置と後置があり、その違い(インクリメント、デ…
enum C の enum に似ているが値として整数だけでなく浮動小数点数や文字列を指定できる ただし指定した値は値を明示しなかった定数の値に影響しない→指定するなら(整数の場合)全部指定しないと被るかも。また開始を0からじゃなくて1からにしたくて最初の要素…
今日は第2章です。新しいプログラミング言語を知るにはまずデータ型から。今日はデータ型、リテラル、そして文字列操作(えっ)と変数について読みます。 Squirrel のデータ型 整数 浮動小数点数 文字列 真偽値 null 整数についてはそのバイト幅や多倍長整数な…
Squirrel スクリプトファイルの拡張子は .nut Squirrel がリスなのでそれに食べさせるファイルはナッツだと。おもしろい命名方法ですね 最初の Squirrel プログラム print ("Hello Squirrel!!\n") print と括弧のあいだに空白があるのが気になりますね。削っ…
Squirrel の特徴 クラスと継承のサポート 高階関数のサポート レキシカルスコープ ジェネレータ、コルーチンなどの並列処理のための機能をサポート 例外 自動的なメモリ管理(つまり GC?) モダンな言語が持つ機能をひととおり持っている感じ。ないのはリフレ…
今日からまたまた達人出版会の「はじめる!」しりーず「はじめる! Squirrel」を読みます。2011年9月版とあるので1年以上積ん読してたんですね。http://tatsu-zine.com/books/squirrelまえがきがそれなりのボリュームがあるので今日はまえがきだけ。 Squirrel …