torch系列:关于luajit中string.format的支持
2017-01-10 15:21
381 查看
一、问题描述
最近在用torch发现一个奇怪的问题,就是在直接运行luajit中如果遇到以下语句会出错x='11111' string.format('%s'%{x})
但是直接运行luajit会报错,attempt to perform arithmetic on a string value。
真是日了狗。
真的是百思不得其解。。。
二、为什么会出现这个问题?
首先需要明确为什么需要直接运行luajit,因为我们需要在eclipse中调试,因此需要这么做。三、问题分析
感性认识:
在介绍这个问题之前,需要明确,启动torch的几种方式(1)直接在命令行输入th,然后输入上面那个出错的语句是没有问题的
(2)直接在命令行输入qlua,然后输入上面那个出错的语句会出现报错
(3)直接在命令行输入luajit,然后输入上面那个出错的语句会出现报错
好了,接下来我把torch里头的th文件(位于torch/install/bin里)的luajit替换成qlua,发现没有报错
也就是说,th文件里头导入的那些就会使得代码能够支持这种用法。
下面看下th文件里头究竟弄了啥
#!/bin/sh
exec '/home/cvlab/torch/install/bin/qlua' -e 'package.path="/home/cvlab/.luarocks/share/lua/5.1/?.lua;/home/cvlab/.luarocks/share/lua/5.1/?/init.lua;/home/cvlab/torch/install/share/lua/5.1/?.lua;/home/cvlab/torch/install/share/lua/5.1/?/init.lua;"..package.path;
package.cpath="/home/cvlab/.luarocks/lib/lua/5.1/?.so;/home/cvlab/torch/install/lib/lua/5.1/?.so;"..package.cpath' -e 'local k,l,_=pcall(require,"luarocks.loader") _=k and l.add_context("trepl","scm-1")' '/home/cvlab/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th'
"$@"
上述代码中有两个-e参数用于导入一些lua的包
那么如果我把上面的-e参数放入eclipse中的解释器中作为参数呢,是否会有用?
-e 'package.path="/home/cvlab/.luarocks/share/lua/5.1/?.lua;/home/cvlab/.luarocks/share/lua/5.1/?/init.lua;/home/cvlab/torch/install/share/lua/5.1/?.lua;/home/cvlab/torch/install/share/lua/5.1/?/init.lua;"..package.path; package.cpath="/home/cvlab/.luarocks/lib/lua/5.1/?.so;/home/cvlab/torch/install/lib/lua/5.1/?.so;"..package.cpath'
-e 'local k,l,_=pcall(require,"luarocks.loader") _=k and l.add_context("trepl","scm-1")'
或者
-e 'package.path="/home/cvlab/.luarocks/share/lua/5.1/?.lua;/home/cvlab/.luarocks/share/lua/5.1/?/init.lua;/home/cvlab/torch/install/share/lua/5.1/?.lua;/home/cvlab/torch/install/share/lua/5.1/?/init.lua;"..package.path; package.cpath="/home/cvlab/.luarocks/lib/lua/5.1/?.so;/home/cvlab/torch/install/lib/lua/5.1/?.so;"..package.cpath'
-e 'local k,l,_=pcall(require,"luarocks.loader") _=k and l.add_context("trepl","scm-1")' '/home/cvlab/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th'
结果发现我即使加入进去,也没有用。
当然,我对lua并不是很熟悉,只能这么尝试。
纠察到底:
另外查了下http://wiki.luajit.org/NYI#libraries_string-library原来
string.format 对于luajit 2.1版本的支持是 partial的,Not for %p or non-string arguments for %s.
那么我尝试把代码修改为:
x='11111'
string.format('%s',x)
发现可以运行,那么问题算是解决了。
相关文章推荐
- 关于MAC安装windows【支持老版本】 支持安装全系列windows
- 【Xamarin挖墙脚系列:IOS-关于手机支持的屏幕方向】
- Windows 8 系列(九):关于VariableSizedWrapGrid与WrapGrid 对Visibility变化而引起的布局变化的支持
- 【Xamarin挖墙脚系列:IOS-关于手机支持的屏幕方向】
- 关于BlogBench的任何建议和Bug请在这里留言,谢谢支持!
- 关于GUID生成函数的不同数据库间的支持
- 关于一个支持多线程下载的Servlet
- Ado.NET 系列quiz 关于事务隔离级别
- 关于多数据库支持产品SwisSQL
- OO随笔(关于connection pool系列的补充,兼答bonmot)
- 关于VB中对Unicode的支持
- 关于怎样做才能让VS.NET IDE支持新的扩展名
- 关于技术支持的一些看法
- 关于Nokia S60系列Emulator: Missing JAR file.错误的解决
- 关于对cross-browser支持的一些看法
- 关于“小马刀系列”
- 关于IIS5下不支持ASP的故障处理分析
- 关于.NET的SMTP的问题:如不支持ESMTP(身份认证)等等
- 关于设计模式系列的文章问题
- 关于配置支持JFreeChart的Tomcat