修改接口时的注意事项
有时候我们需要修改接口来满足自己的需求,例如这段代码中只提供了根据key值寻找value:
local tab = {
a = "A",
b = "B"
}
function searchSomething(key)
return tab[key]
end
print(searchSomething("a"))
如果我们还需要通过value来寻找key值呢?
function searchSomething(key)
return tab[key]
end
function searchSomething(value)
for k,p in pairs(tab) do
if p == value then
return k
end
end
return k
end
print(searchSomething("A"))--a
print(searchSomething("a"))--nil
有的语言例如C++和C#中支持函数重载,可以定义两个不同参数的同名函数,但在lua中并不支持,名字相同的两个函数,哪个晚定义就会执行哪个,比如上面的代码中根据key寻找value的函数已经失效了。我们可以定义一个不同名字的函数或者修改原来的接口:
function searchSomething(key, value)
if value then
for k,p in pairs(tab) do
if p == value then
return k
end
end
end
return tab[key]
end
print(searchSomething("b"))--B
print(searchSomething("b", "A"))--a
需要注意的是在添加参数时需要在函数中增加判断,如果参数不为空才执行相应的逻辑,修改接口时不能让原有的调用失效。