gpt4 book ai didi

lua - 变量.functionName 和变量 ["functionName"之间的区别]

转载 作者:行者123 更新时间:2023-12-03 23:09:18 27 4
gpt4 key购买 nike

我知道你可以直接使用名称来获取变量和调用函数

variable.functionName

或使用名称作为字符串

variable["functionName"] or variable[functionNameString]

现在我的问题是:这些不同的方式是否会产生任何差异,或者它们是否完全可以互换?

我对这里的性能最感兴趣,但欢迎任何启发。

最佳答案

PUC-Rio Lua 5.1 字节代码

print(variable.functionName)
print(variable["functionName"])
print(variable[functionNameString])

main <var.lua:0,0> (14 instructions, 56 bytes at 0xafe530)
0+ params, 3 slots, 0 upvalues, 0 locals, 4 constants, 0 functions
1 [1] GETGLOBAL 0 -1 ; print
2 [1] GETGLOBAL 1 -2 ; variable
3 [1] GETTABLE 1 1 -3 ; "functionName"
4 [1] CALL 0 2 1
5 [2] GETGLOBAL 0 -1 ; print
6 [2] GETGLOBAL 1 -2 ; variable
7 [2] GETTABLE 1 1 -3 ; "functionName"
8 [2] CALL 0 2 1
9 [3] GETGLOBAL 0 -1 ; print
10 [3] GETGLOBAL 1 -2 ; variable
11 [3] GETGLOBAL 2 -4 ; functionNameString
12 [3] GETTABLE 1 1 2
13 [3] CALL 0 2 1
14 [3] RETURN 0 1

正如您所看到的,前两行生成完全相同的字节代码(因此花费相同的时间),而第三行具有额外的(全局)变量访问权限。

第一行仅有效,因为“functionName”是有效的Lua标识符而不是保留字。第 2 行和第 3 行对字符串键的格式没有限制。

关于lua - 变量.functionName 和变量 ["functionName"之间的区别],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29695829/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com