Hello!
2013/1/14 zhang yan:
> 遇到一个ngx_lua的问题,不知是否有人反馈过。
>
Google 在这个时候总是你最好的朋友 ;)
> local ret = { a="dog", b="cat"}
> for k,v in pairs(ret) do
> -- if change to ngx.print, this line will not work.
> print(string.format("\"%s\":\"%s\"", k, v) ) --
> 这中形式放到ngx配置里不好使;是不是不支持?
>
简单地说,你需要首先遵守 Nginx 配置文件字符串常量的逃逸规则(因为你的 Lua 代码首先是放在一个 Nginx
配置文件字符串常量中的),然后再遵守 Lua 字符串常量的逃逸规则。
细节请见官方文档中对这个问题的专门讨论:
http://wiki.nginx.org/HttpLuaModule#Special_PCRE_Sequences
> 另外,lua5.2 之后,对于 hash类型的 table,是不是没有直接获取 “个数” 的内置函数?
> (对于 index table,像perl里的 array,用getn/ #table 倒是挺好用)
>
1. ngx_lua 模块只能和 Lua 5.1 的 ABI 一起工作,LuaJIT 2.0 也是使用的 Lua 5.1 的 ABI.
2. 即使是在 Lua 5.1 语言中也没有获取哈希型 table 的元素个数的原语,你需要自己遍历计数。
同时抄送给 openresty 中文邮件列表:http://openresty.org/#Community
希望你也能加入此列表并在那里交流这样的技术问题,谢谢合作 :)
Best regards,
-agentzh