Function Lua:使用参数引用表值时出现问题
当涉及到参数时,我遗漏了一些基本的东西Function Lua:使用参数引用表值时出现问题,function,parameters,lua,Function,Parameters,Lua,当涉及到参数时,我遗漏了一些基本的东西 obj = { name = "hey" } function say_name(p,k) return p.k end print(say_name(obj,name)) --doesn't print "hey" 我不明白为什么它不能提供与print(对象名称)相同的输出,即“嘿” 更改函数会产生以下情况: function say_name(p) --works...makes sense
obj = {
name = "hey"
}
function say_name(p,k)
return p.k
end
print(say_name(obj,name)) --doesn't print "hey"
我不明白为什么它不能提供与print(对象名称)相同的输出,即“嘿”更改函数会产生以下情况:
function say_name(p) --works...makes sense to me
return p.name
end
function say_name(p,k) --doesn't work...why does k not work the same as p?
return p.k
end
function say_name(p,name) --works....why tho? isn't name a parameter like k is..?
return p.name
end
是因为我引用了一个带有参数的表值吗?这有什么我不知道的规则吗
Try this:
obj = {
name = "hey"
}
function say_name(p,k)
return p[k]
end
print(say_name(obj,"name"))
我在name
周围加了引号name
是nil
,但是您需要字符串“name”
来分别索引obj.name
或obj[“name”]
p.k
相当于p[“k”]
!这仅适用于有效Lua名称的字符串键。如果您有一个变量或任何其他键,则需要使用方括号表示法
从
方括号用于索引表格:
var ::= prefixexp ‘[’ exp ‘]’
访问表字段的含义可以通过元表更改
(见§2.4)
语法var.Name只是var[“Name”]的语法糖:
p.k
是p[“k”]
。它与函数的参数k
无关
p.name
是p[“name”]
。它与您的参数名称
无关。这只是一个巧合,它适用于obj.name
,因为obj
有一个字段“name”
,任何其他字符串都不起作用我遇到了与代码更改相同的问题。i、 [无]对不起,我忘了引用。它是sayname(obj,“name”)
var ::= prefixexp ‘.’ Name
function say_name(p,k) --doesn't work...why does k not work the same as p?
return p.k
end
function say_name(p,name) --works....why tho? isn't name a parameter like k is..?
return p.name
end