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’。