MoonScript 代表月亮消灭你
2019-7-25 11:2:23
收藏:0
阅读:2338
评论:0
MoonScript 代表月亮消灭你
简介
用一个类比,说清它是什么:
MoonScript:Lua=CoffeeScript:JavaScript
MoonScript 可以直接运行(生成Lua中间代码),也可以生成lua,还可以作为包加载到lua中使用require "moonscript"
。
例子
- 定义一个模块
module.moon
#!/usr/bin/env moon
export module
module = {}
M = module
M.length = (x, y) -> math.sqrt x*x + y*y
M.print_result = (x, y) ->
print "Length is ", M.length x, y
-- return M (不必要)
- 在
main.moon
中调用模块(中的函数)
#!/usr/bin/env moon
moudle = require "module"
import print_result from module
print_result 4, 5 -- prints the result
运行 运行
moon /path/to/main.moon
结果是Length is 6.4031242374328编译,生成lua文件 运行
moonc /path/to/main.moon
运行moonc /path/to/module.moon
再运行lua Programming/MoonScript/main.lua
结果是Length is 6.4031242374328
生成的Lua代码往往看上去有点杂乱,但是效率很高。
资源
个人习作
定义模块
#!/usr/bin/env moon
freqdist = {}
M = freqdist
M.count =(array)->
t = {} -- 记录统计次数信息
for i, a in ipairs array
if t[a] -- t 中存在 a
t[a] = t[a] + 1 -- 计数 + 1
else -- t 中不存在 a
t[a] = 1 -- 开始计数,a放入表中
return t
M.ordered_count=(array)->
set = {}
count = {}
for i, a in ipairs array
if set[a]
for k, v in ipairs count
word, times = v[1], v[2]
if word == a
k0=k
v0= {a, times+1}
break
k=k0-1
while k>0
v = count[k]
if v[2]>times
table.remove count, k0
table.insert count, k+1, v0
break
k -=1
if k==0 then
table.remove count, k0
table.insert count, 1, v0
else
set[a] = true
count[#count+1]={a, 1}
return count
M.freq=(array)->
-- 计算频率
t = count array
N = #array
for i, a in pairs t
t[i] = a / N
return t
M.ngram=(array, n)->
if n==nil
n=2
t={}
N = #array
for i=1, N-n
s ={}
for j=1, n
s[j]=array[j+i-1]
t[i]=s
return t
return M
注意,没有用export,因此return 是必要的。
调用
#!/usr/bin/env moon
freq = require "freq"
t = freq.count {4, 5,3,1,2,3,4}
for k, a in pairs t
print k, a
运行moon Programming/MoonScript/hello.moon
1 1 2 1 3 2 4 2 5 1
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
- 如何创建一个 lua 脚本以针对特定键为 fluentbit 进行限流
- 如何在Lua中将变量从Lua推送到C ++
- 使用LUA/perl将Nginx重写查询参数值转换为小写字母
- 在 Roblox 中,我正在尝试让当你使用接近提示时,一个图像标签变得可见并在重新加入时仍然可见
- 处理多个有序数据存储请求