我对以下输出感到困惑:
local a = "string"
print(a.len) -- function: 0xc8a8f0
print(a.len(a)) -- 6
print(len(a))
--[[
/home/pi/test/wxlua/wxLua/ZeroBraneStudio/bin/linux/armhf/lua: /home/pi/Desktop/untitled.lua:4: attempt to call global 'len' (a nil value)
stack traceback:
/home/pi/Desktop/untitled.lua:4: in main chunk
[C]: ?
]]
Run Code Online (Sandbox Code Playgroud)
Lua中计算字符串长度的正确方法是什么?
先感谢您,
Notepad ++提供了一个功能列表.
我目前正在使用Notepad ++ 6.5
functionList.xml使用正则表达式定义函数名称的解析器.
以下代码定义了c函数的解析器
<parser id="c_function" displayName="C source" commentExpr="((/\*.*?\*)/|(//.*?$))">
<function
mainExpr="^[\t ]*((static|const|virtual)[\s]+)?[\w:]+([\s]+[\w]+)?([\s]+|\*[\s]+|[\s]+\*|[\s]+\*[\s]+)([\w_]+[\s]*::)?(?!(if|while|for))[\w_]+[\s]*\([^\)\(]*\)([\s]*const[\s]*)?[\n\s]*\{"
displayMode="$functionName">
<functionName>
<nameExpr expr="(?!(if|while|for))[\w_~]+[\s]*\("/>
<nameExpr expr="(?!(if|while|for))[\w_~]+"/>
</functionName> </function>
</parser>
Run Code Online (Sandbox Code Playgroud)
我在网上尝试了我的正则表达式,一切都很好.但它不能以某种方式对functionList.xml起作用.功能列表保持为空.
这对于Lua函数看起来如何?
这是我的尝试:
<parser id="lua_function" displayName="Lua Function" commentExpr="((--\[\[\*.*?\*)/|(--.*[\n\s\w\t]*\]\]))">
<function
mainExpr="^[\t\s]*(function)[\s]+[\w]+\("
displayMode="$functionName">
<functionName>
<nameExpr expr="(?:(function[\s]+))[\w]+"/>
</functionName>
</function>
</parser>
Run Code Online (Sandbox Code Playgroud) 我试图了解如何通过Lua使用TI-Nspire CAS系统。我正在尝试模拟
solve(x+5/3,x)
TI-Nspire CX CAS gui 中的功能。
我相信我正在寻找的是eval
第 51 页上的功能,尽管我在网上找不到太多可供采样的内容。提供的示例并非具体示例。
math.eval(math_expression) --apilevel = 2.0
math.eval(math_expression, [exact]) --apilevel = 1.0
Run Code Online (Sandbox Code Playgroud)
local expr = "f1("..mx")"
return math.eval(expr)
Run Code Online (Sandbox Code Playgroud)
我试过了
require "math"
local answer
answer = math.eval("f1(x+3/4,x)")
answer = math.eval(x+3/4,x)
answer = math.eval("5+9")
Run Code Online (Sandbox Code Playgroud)
我不断收到错误“初始化期间无法执行”。
1)如何修复错误
2)我可以有一些使用该功能的具体例子吗
当if语句分支不包含任何语句时,Luacheck linter会发出警告.例如,如果我有一个test.lua
使用以下代码调用的文件
local function f(x)
if x == "hello" then
-- nothing to do
elseif x == "world" then
print(17)
else
error("bad value for x")
end
end
f("world")
Run Code Online (Sandbox Code Playgroud)
然后运行luacheck test.lua
将产生以下诊断
Checking test.lua 1 warning
test.lua:2:21: empty if branch
Total: 1 warning / 0 errors in 1 file
Run Code Online (Sandbox Code Playgroud)
有办法解决这个警告吗?据我所知,没有配置选项来禁用它,并尝试使用分号的一些空语句也不会使警告静音(实际上它只会添加关于空语句的附加警告):
if x == "hello" then
;
elseif ...
Run Code Online (Sandbox Code Playgroud)
目前,我能想到的唯一解决方法是创建一个额外的if语句层,我认为它不如原始版本清晰.
if x ~= "hello" then
if x == "world" then
print(17)
else
error("impossible")
end
end
Run Code Online (Sandbox Code Playgroud) 我正在尝试将以下内容打印为 lua 中的输出。
inertia_x = {
{46.774, 0., 0.},
{0., 8.597, 0.},
{0., 0., 50.082}
}
x = {mass = 933.0, com = {0.0, 143.52, 0.0}, inertia_x}
print(x)
Run Code Online (Sandbox Code Playgroud)
该代码是在文本编辑器中编写的,并命名为sample.lua
现在我正在使用 Linux,在存储 .lua 文件时我会转到正确的目录,然后调用
$ lua 样本.lua
输出为表:0x55c9fb81e190
我理想地希望像列表一样打印 x
这是继 Hello World 之后我的第二个 lua 程序。对 Linux 和编程也很陌生。
我将非常感谢您的帮助!
有人可以解释一下吗?
for i = 1, 5 do
print(i)
i = i - 1
print(i)
end
Run Code Online (Sandbox Code Playgroud)
输出是:
1
0
2
1
3
2
and so forth
Run Code Online (Sandbox Code Playgroud)
我曾经想过我会在1和0之间进行改变.但显然它会不断增加,好像我根本没有改变它.这是怎么回事?
我不时要删除第i个表元素.所以下一个要处理的元素将是我.CI中只会在循环内容的末尾写入-i.在卢阿的任何官方方式?:)
我尝试在名为“Point”的“basic.lua”文件上定义我的类,并尝试在文件“main.lua”上实现它,但我不断收到此错误:
Error
Syntax error: basic.lua:3: '(' expected near 'Point'
Traceback
[C]: at 0x7ffc269728f0
[C]: in function 'require'
main.lua:3: in function 'load'
[C]: in function 'xpcall'
[C]: in function 'xpcall'
Run Code Online (Sandbox Code Playgroud)
这是我的“basic.lua”代码
return {
function Point(self, x, y)
local Point = {
x = x;
y = y;
AsString = function(self)
print("{x: " + self.x + ", y: " + self.y + "}");
end;
}
return Point;
end;
};
Run Code Online (Sandbox Code Playgroud)
这是我的“main.lua”代码
function love.load()
local Basic = require("basic");
PlayerAcceleration = Basic.Point:new{1, 2};
PlayerVelocity = …
Run Code Online (Sandbox Code Playgroud) 如何检查Lua中是否存在方法?
function Object:myMethod() end
function somewhereElse()
local instance = Object()
if instance:myMethod then
-- This does not work. Syntax error: Expected arguments near then.
-- Same with type(...) or ~=nil etc. How to check colon functions?
end
end
Run Code Online (Sandbox Code Playgroud)
它是Lua 中的面向对象编程。检查函数或点成员(表)没有问题。但是如何检查方法( :
)呢?
此错误发生在我的代码的第3行,我不知道为什么。
我正在尝试使用x..q创建多个变量,但是它不起作用。
for i=1,3 do
for q=1,3 do
x..q=i+1
print(x..q)
end
end
Run Code Online (Sandbox Code Playgroud)
输出应为:2 2 2 3 3 3 4 4 4
但是,它返回标题中的错误。
我需要一个格式为的日期时间字符串%Y-%m-%d %H:%M:%S
。
我不知道如何使用Lua的标准功能os.date()
并os.time()
实现它。
据我了解,Parallel.ForeachAsync 调用中的委托会同时执行多次。
如果该委托操作的变量不是该委托的本地变量怎么办?
假设我在委托中增加了一个静态计数器。我需要通过互斥锁或其他东西来保护计数器吗?