所以我在Mobile Orchard上阅读了这篇文章,当我计划在Android开发中迈出第一步时,它让我想到:是否有可能只在Lua中开发Android?我用Google搜索了主题,但没有找到明确的答案.我知道Java是Android的"基本风格",但对于我的编码新手(基本的Python,基本的C++),Lua似乎更清晰,更友好.然后我的问题是:只能使用Lua开发Android应用吗?如果是的话,你能告诉我一些从这里搬家的方向吗?
我有这个正则表达式:
^(^?)*\?(.*)$
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,这就是它的功能细分:
那么(^?)*是什么意思?
我有一个像这样的表达式/公式
std::string expr="((A>0) && (B>5 || C > 10))";
Run Code Online (Sandbox Code Playgroud)
我做了一些研究,似乎如果已知A,B,C值,通过在C++程序中嵌入Lua或Python,有些eval函数可以替代A,B和C并返回true或false.
但是当我不知道所有的价值时会发生什么?让我们说A是已知的,它是-1.如果A为-1,则无论B或C的值如何,公式都将评估为"假".
我可以在不事先知道所有变量的情况下评估公式吗?例如,如果A为10,则查找B的值并再次重新评估是有意义的.我们如何解决这些问题?想法?
作为一个长期以来的魔兽世界玩家,以及一个充满激情的开发者,我已经决定将这两者结合起来并着手开发一些插件.不仅可以改善我的游戏体验,还可以作为学习新东西的绝佳机会.
有没有人对如何开始有任何建议?
是否有可以使用的IDE?如何进行测试?有没有现成的图书馆?或者通过忽略图书馆并从头开始构建,我会获得更好的学习体验吗?我怎么选择Hogger?
很想听听你的建议,经验和观点.
我们中的许多人都被灌输使用XML来存储数据.它的好处和缺点是众所周知的,我当然不想在这里讨论它们.但是在我用C++编写的项目中,我也使用了Lua.我很惊讶Lua可以用来存储和处理数据.然而,至少在游戏编程世界中,Lua的这一方面不太被认可.
我知道XML在诸如通过互联网发送数据的情况下以及在安全起作用的地方(例如使用从网络下载的数据,或加载用户可编辑的配置文件)以及最后的情况下具有优势.不同语言的程序正在读取相同的数据.
然而,一旦我学会了使用Lua处理数据是多么好和容易(特别是让luabind支持你!),我开始怀疑是否有任何理由使用XML来存储游戏数据,如果我们已经使用了Lua呢?
暴雪在使用Lua编写UI脚本时,仍然以XML格式存储布局.是什么原因只有UI相关?
使用Lua作为数据存储语言有什么缺点?
考虑以下要求:
我喜欢Python的可读性.我对Python的经验也比其他脚本语言更多.但是CPython不是多线程的,IronPython需要托管CLR和兼容的语言(C++/CLI或C#).
这似乎应该很简单,但我在这里空手而归.我正在尝试创建一个简单的VLC脚本来检查"随机"按钮是否打开,如果是,当它跳转到随机文件时,而不是从时间= 0开始,它会在随机时间开始.
到目前为止,它看起来像我应该是一个播放列表脚本,我可以从播放列表对象获取持续时间,但在这个文档页面或谷歌,我似乎无法找到任何方式跳转到特定时间在Lua脚本中.有没有人有更多使用Lua控制VLC播放的经验?
我想读取一个完整的mp3文件,以便读出id3标签.就在那时我注意到那个文件:read("*a")显然不会读取整个文件而是一小部分.所以我尝试构建某种解决方法以获取整个文件的内容:
function readAll(file)
local f = io.open(file, "r")
local content = ""
local length = 0
while f:read(0) ~= "" do
local current = f:read("*all")
print(#current, length)
length = length + #current
content = content .. current
end
return content
end
Run Code Online (Sandbox Code Playgroud)
对于我的testfile,这表明执行了256次读取操作,总共读取了~113kB(整个文件大约为7MB).虽然这应该足以读取大多数id3标签,但我想知道为什么Lua会以这种方式运行(特别是因为它在读取大型基于文本的文件时不会,例如*.oj或*.ase).是否有任何解释这种行为或可能是一个可靠的读取整个文件的解决方案?
我有一个稀疏的lua表,我需要迭代它.问题是,似乎lua从1开始迭代,并在找到nil值后立即终止.这是和例子:
> tab={}
> tab[2]='b'
> tab[5]='e'
> for i,v in ipairs(tab) do print(i,v) end
> --nothing is output here
> tab[1]='a'
> for i,v in ipairs(tab) do print(i,v) end
1 a
2 b
> --terminates after 2 (first nil value is tab[3])
Run Code Online (Sandbox Code Playgroud)
有没有办法得到所需的输出:
1 a
2 b
5 e
Run Code Online (Sandbox Code Playgroud) 在Scala或Lua等编程语言中,我们可以定义嵌套函数,如
function factorial(n)
function _fac(n, acc)
if n == 0 then
return acc
else
return _fac(n-1, acc * n)
end
end
return _fac(n, 1)
end
Run Code Online (Sandbox Code Playgroud)
这种方法是否会导致效率低下,因为每次调用外部函数时都会定义或创建嵌套函数实例?