Rua: Procまわり

http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/rua/rua/?root=svn
とりあえず、Ruby側で関数を定義できるようにした。

  • Luaで定義した関数をRubyで呼ぶ

  • Rubyで定義した関数をLuaで呼ぶ
  • Hashとテーブルの相互互換
  • Array→テーブル

Lua側の関数を呼び出せるようなAPIは見つからないなぁ。
というか、別に呼べてもうれしくないかも。

require 'rua'

rua = Rua.new(:base)

rua[:add] = lambda do |i, j|
  return i + j
end

rua[:make_fib] = lambda do
  a, b = 1, 1

  return lambda do
    tmp = a
    a, b = b, a + b
    return tmp
  end
end

rua.eval(<<EOS)
  print('add:' .. add(1, 2))

  fib = make_fib()
  for i = 1, 10 do
    print('fib[' .. i .. ']:' .. fib())
  end
EOS


add:3
fib[1]:1
fib[2]:1
fib[3]:2
fib[4]:3
fib[5]:5
fib[6]:8
fib[7]:13
fib[8]:21
fib[9]:34
fib[10]:55