如何在lua中从moonscript调用函数?

我有一个moon脚本代码,如下所示:

hello = (name) ->
  print "Hello #{name}!"

我想使用moonscript.loadfile在我的lua代码中使用它。

我应该如何做到这样?

点赞
用户127833
用户127833

MoonScript 代码编译成 Lua 代码,因此当它被执行时,你所编写的函数实际上是一个 Lua 函数。

下面有几种方法可以在 Lua 中访问它:

  • 使用 moonc 命令行工具提前编译文件。这将给你一个 .lua 文件,你可以像加载其他 Lua 文件一样加载它。
  • 使用 MoonScript 的其中一种加载器函数来加载文件。moonscript.loadfile 是一个较低级别的函数,我不建议使用它,除非特别需要。最简单的方法是在你的程序中调用 require "moonscript",然后 Lua 的 require 函数会被增强以能够直接加载 MoonScript 文件。关于此更多信息,请参考 编译器 API 参考页面

请记住,如果你有另一个文件中的函数,你需要将它们作为模块的一部分导出。你可以通过为模块返回一个值来实现这一点。通常的模式是返回一个包含所有要使用的函数的表。在 MoonScript 中,文件的最后一行会自动转换为返回语句。但赋值并不会被转换为返回语句,因此我建议将模块结构化如下:

hello = (name) ->
  print "Hello #{name}!"

{:hello}
2017-01-15 20:19:17