local String = {}
function String:get2(a, b)
return a + b
end
function String:get(a,b, func)
return func(a,b)
end
print(String:get(1, 2, String:get2 ))
local String = {}
function String:get2(a, b)
return a + b
end
function String:get(a,b, func)
return func(a,b)
end
print(String:get(1, 2, String:get2 ))
该回答引用ChatGPT
在Lua中,方法类似于其他语言中的类成员函数,它们是定义在类型(例如字符串)上的函数。在Lua中,类型是用表(table)表示的,并且表上的函数可以通过调用该表并使用冒号语法访问。
例如,在您的代码中,您定义了一个名为 String 的表,该表上定义了两个方法:String:get2 和 String:get。 方法 String:get2 简单地返回两个参数的和,而方法 String:get 则接受一个函数作为参数,并将其作为参数调用。
local String = {}
function String:get2(a, b)
return a + b
end
function String:get(a,b, func)
return func(a,b)
end
print(String:get(1, 2, function(a,b) return String:get2(a,b) end))
在您的代码中,您尝试调用方法 String:get,并将方法 String:get2 作为第三个参数传递。然而,此操作并不能正常工作,因为它不能将方法作为函数传递。
要解决此问题,您可以将方法 String:get2 包装在匿名函数中,并将该函数作为第三个参数传递给方法 String:get。