小编Aub*_*e18的帖子

Lua:冒号,'自我'和函数定义与调用

我对定义/调用Lua函数时使用的冒号表示法感到非常困惑.

在我看到这段代码之前,我以为我已经知道了.

function string.PatternSafe( str )
    return ( str:gsub( ".", pattern_escape_replacements ) );
end

function string.Trim( s, char )
    if char then char = char:PatternSafe() else char = "%s" end
    return string.match( s, "^" .. char .. "*(.-)" .. char .. "*$" ) or s
end
Run Code Online (Sandbox Code Playgroud)

令我困惑的是string.PatternSafe()在任何地方都没有引用'self',但代码似乎有效.

我还看到了一些在定义函数时使用冒号表示法的脚本,例如:

function foo:bar( param1 ) ... end
Run Code Online (Sandbox Code Playgroud)

经过几个小时的谷歌搜索后,我仍然无法弄清楚在这两种情况下究竟发生了什么.我目前的假设如下:

  1. 如果使用冒号表示法定义函数,则会获得作为第一个参数插入的不可见"自"参数
  2. 如果使用冒号表示法调用函数,则将':'前面的对象插入到参数中(因此成为函数的第一个参数)
  3. 如果使用点表示法调用函数,那么即使使用冒号表示法定义它也不会将对象作为第一个参数/参数插入

如果我的假设是正确的,那就提出了另一个问题:确保正确调用函数的最佳方法是什么?

lua function self notation colon

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

Git:如何确保新分支基于上游主服务器

我一直在用github犯很多菜鸟错误,结果我正在寻找一种万无一失的方法(确保我安全!),以确保:

a)我在fork上创建的所有新分支均基于原始主文件,而不是其他某些分支,并且...

b)我的原始母版始终与上游母版保持最新,并且...

c)当我提交(推送?)时/之前,我的更改将重新基于上游主服务器。

到目前为止,这就是我所拥有的...

要创建新分支:

git fetch --all --tag
git pull upstream master
git push origin master
git checkout -b my_branch_name -t origin/master
Run Code Online (Sandbox Code Playgroud)

要将我的更改存储到该分支:

git add -A
git commit -m "Summary of what changed"
git fetch --all --tag
git pull --rebase upstream master
git push origin my_branch_name
Run Code Online (Sandbox Code Playgroud)

要在以后加载现有分支(例如,根据PR反馈进行一些其他更改):

git fetch --all --tag
git pull upstream master
git push origin master
git checkout my_branch_name -t origin/master
Run Code Online (Sandbox Code Playgroud)

然后将更新保存到该分支:

git add -A
git commit --amend --no-edit
git fetch --all --tag
git pull …
Run Code Online (Sandbox Code Playgroud)

git branch github

5
推荐指数
3
解决办法
3258
查看次数

有没有办法告诉`next`从特定键开始?

我的理解是pairs(t)简单回归next, t, nil.

如果我将其更改为next, t, someKey(someKey我的表中的有效密钥在哪里)将从next该密钥开始/之后?

我在Lua Demo页面上试过这个:

t = { foo = "foo", bar = "bar", goo = "goo" }

for k,v in next, t, t.bar do
  print(k);
end
Run Code Online (Sandbox Code Playgroud)

每次运行代码时都会得到不同的结果.因此,指定一个起始键有效,遗憾的是效果似乎有点随机.有什么建议?

lua iterator next lua-table

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

标签 统计

lua ×2

branch ×1

colon ×1

function ×1

git ×1

github ×1

iterator ×1

lua-table ×1

next ×1

notation ×1

self ×1