Moonscript的Map声明差异
Moonscript的Map声明差异
在Moonscript中,第一种table map的声明,对变量的赋值使用的是:“=”,,而第二种使用的方式是:“:”,可以通过下面moonc生成的代码,看出差异在那里:
使用:“=”
stats= {
buffer_size_limit: t['journal_size_limit'],
buffer_size: t['journal_size'],
}
local stats = {
buffer_size_limit = t['journal_size_limit'],
buffer_size = t['journal_size']
}
使用:“:”
stats: {
buffer_size_limit: t['journal_size_limit'],
buffer_size: t['journal_size'],
}
local _ = {
stats = {
buffer_size_limit = t['journal_size_limit'],
buffer_size = t['journal_size']
}
}
而上述这种差异,会在什么地方起作用呢?
json = require "cjson"
util = require "cjson.util"
stats= {
buffer_size_limit: t['journal_size_limit'],
buffer_size: t['journal_size'],
}
json: {
success: true
message: json.encode(stats)
}
在Cjson的encode时,如果选用的表变量是":"声明,基本是无法编码成json出来的,不出意外,返回的就是一个’null’。