lua4swift, 用于Swift的高级( 方便) Lua绑定

分享于 

4分钟阅读

GitHub

  繁體 雙語
High-level (convenient) Lua bindings for Swift
  • 源代码名称:lua4swift
  • 源代码网址:http://www.github.com/sdegutis/lua4swift
  • lua4swift源代码文档
  • lua4swift源代码下载
  • Git URL:
    git://www.github.com/sdegutis/lua4swift.git
    Git Clone代码到本地:
    git clone http://www.github.com/sdegutis/lua4swift
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/sdegutis/lua4swift
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    lua4swift

    高级的( 方便) Lua绑定用于 Swift。

    • 版本: 1.0

    你是指什么?

    它是用来为你的OS X 应用程序增加可扩展性的。 你已经编写了一个应用程序,并且只需要使它可以扩展,所以你只需抛入这个库。

    你是指什么?

    这里库不允许你使用传统的"lua堆栈"。 相反,你可以使用Swift值操作:

    当你创建一个Lua函数时,你真的给它一个快速的函数,这个库将它包装起来。 函数接受一个值 array,然后你将提取并使用它。 完成后,返回值的array。 当你想创建值时,不要将它们推到堆栈上,你可以使用 VirtualMachine 实例中的方法创建它们。

    这些值都是Lua和sdl之类的类型,比如String和 Boolean,或者一个Lua类型的快速包装器,如函数和数字。 这意味着从自定义的Lua函数返回值可以像 return ["foo","bar"] 一样自然。

    lua类型的table 包装使用一个具有快速记号标记的类,因这里可以像 t[3] ="foo" 或者 t["foo"] = myLuaFunction 一样使用它。 此外,还有一个更为自然和一致的方法来访问"lua的全局变量"和"注册表",这两种方法都是 VirtualMachine 实例上类型为 () -> Lua.Table的方法。

    因为这一切,这个库制作了一些交易,使它不能尽可以能的优化速度和内存。

    你是指什么?

    你是指什么?

    比如,它包装了C,所以你可以从Swift使用 Lua。 那种绑定不是另一种。 而不是另一种。 绑定的含义太多。 也许我们应该在谈论内容时使用更多的词汇?

    给我们一个例子 !

    好罚款。

    下面是roberto中的函数端口,用字符串分隔符分割字符串:

    let vm = Lua.VirtualMachine()let stringxLib = vm.createTable()
    stringxLib["split"] = vm.createFunction([String.arg, String.arg]) { args inlet (subject, separator) = (args.string, args.string)
     let fragments = subject.componentsSeparatedByString(separator)
     let results = vm.createTable()
     for (i, fragment) inenumerate(fragments) {
     results[i+1] = fragment
     }
     return. Value(results)
    }
    vm.globals["stringx"] = stringxLib

    这样,你可以用Lua来实现:

    stringx.split('hello world', '') -- returns {"hello","world"}

    许可证

    在MIT许可证下发布。

    版权所有( c ) 2015 Steven Degutis

    若要在取得该软件副本时免费授予任何人,如有下列条件的软件,请免费授予该软件的副本,并与相关的文档文件("软件") 进行许可,包括不受限制的权利,包括以下条件:

    上述版权声明和本许可声明须包括在所有的副本或实质性部分的软件。

    软件是"是",没有任何保证,表示或者隐含,包括但不限于销售,适合特定用途和 NONINFRINGEMENT。 作者或者版权持有人在合同。侵权或者它的他与软件或者它的他用户交易的行为。


    BIN  HIG  Swift  bindings  Level  LUA