小编Pig*_*let的帖子

计算字符串长度会导致混乱

我对以下输出感到困惑:

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中计算字符串长度的正确方法是什么?

先感谢您,

lua

8
推荐指数
1
解决办法
5170
查看次数

如何将Lua函数添加到Notepad ++ functionList.XML

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)

regex xml lua notepad++

7
推荐指数
1
解决办法
4975
查看次数

使用 TI-Nspire 数学库中的 eval 函数

我试图了解如何通过Lua使用TI-Nspire CAS系统。我正在尝试模拟 solve(x+5/3,x) TI-Nspire CX CAS gui 中的功能。

我查看了这里找到的API文档:https://education.ti.com/download/en/ed-tech/59108CCE54484B76AF68879C217D47B2/7EFB09CED41C4190AFF8F60283B6727A/TI-NspireLuaScriptingAPIReferenceGuide.pdf

我相信我正在寻找的是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)我可以有一些使用该功能的具体例子吗

lua ti-nspire

5
推荐指数
1
解决办法
378
查看次数

如何忽略Luacheck警告?

当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 luacheck

4
推荐指数
2
解决办法
981
查看次数

尝试用lua打印表格

我正在尝试将以下内容打印为 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 和编程也很陌生。

我将非常感谢您的帮助!

linux lua

4
推荐指数
1
解决办法
7312
查看次数

Lua for loop减少了我?奇怪的行为

有人可以解释一下吗?

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.在卢阿的任何官方方式?:)

lua for-loop decrement

3
推荐指数
1
解决办法
1094
查看次数

如何在 Lua (Love2D) 库中定义类?

我尝试在名为“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 module class love2d

3
推荐指数
1
解决办法
288
查看次数

Lua检查方法是否存在

如何检查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 中的面向对象编程。检查函数或点成员(表)没有问题。但是如何检查方法( :)呢?

oop lua

3
推荐指数
1
解决办法
1305
查看次数

如何修复“。”附近的“'=' “ 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

但是,它返回标题中的错误。

lua for-loop concatenation

2
推荐指数
1
解决办法
56
查看次数

如何在Lua中以格式字符串获取本地时间

我需要一个格式为的日期时间字符串%Y-%m-%d %H:%M:%S

我不知道如何使用Lua的标准功能os.date()os.time()实现它。

lua datetime-format

1
推荐指数
1
解决办法
743
查看次数

Parallel.ForeachAsync 时是否需要互斥体?

据我了解,Parallel.ForeachAsync 调用中的委托会同时执行多次。

如果该委托操作的变量不是该委托的本地变量怎么办?

假设我在委托中增加了一个静态计数器。我需要通过互斥锁或其他东西来保护计数器吗?

c# concurrency mutex asynchronous parallel.foreachasync

1
推荐指数
1
解决办法
98
查看次数