2008年12月23日

シンタックスシュガー

local a = {b = {c = 1}} -- テーブルのテーブル作成
> print(a.b.c)
--> 1
function a.b.d(self, arg) return arg end
> print(a.b:d(5))
--> 5
> print(a:b.d(5))
--> lua: syntax.lua: `.' 付近に文法エラーがあります。この位置には関数呼び出しの引数が必要です

テーブルのテーブルを組む場合は最後のテーブルのみに
シンタックスシュガーを使うことが出来ます。
当たり前のことですが、紛らわしかったのでメモします。
posted by silica at 17:36| Comment(0) | TrackBack(0) | ホムンクルス | このブログの読者になる | 更新情報をチェックする

ROクライアント+Perl

不正管理ツールがnProtectから新しいものに変更されました。
これによりPerlプログラムをROと一緒に同時実行してもROクライアントが
落ちなくなりました。

Luaの最新版は5.1.4ですが、ROクライアントは5.0.2のままです。
5.0と5.1では色々変わってるために5.1のライブラリを使えません。
今後はLua5.1用の新しいライブラリを使えなくて色々苦労しそうです。

と思ったらまたnProtect復活ですね…。
ただ今度はROクライアント起動中にPerlを実行しても落ちないみたい。
posted by silica at 17:24| Comment(0) | TrackBack(0) | ホムンクルス | このブログの読者になる | 更新情報をチェックする

mathライブラリは遅い?

可能な限りAIの人が昔そう語っていたのを思い出しました。
それについて実際に検証していきます。

math.absを例に取り上げると:

math.absはmath["abs"]と同等。
mathは関数型の数学関数テーブルです。

print(math["abs"](-1))
--> 1

abs = math.abs
print(abs(-1))
--> 1

テーブルのキーから引くのが遅いだけで、テーブルを経由せずに直接指定すると
逆に高速なことが分かります。

※Luaのソースコードを見たらmath.absはC言語のfabs()を直接呼び出しています。

実行例:
http://subtech.g.hatena.ne.jp/cho45/20070512/1178908536

posted by silica at 17:19| Comment(0) | TrackBack(0) | ホムンクルス | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。