Programming in Lua:函数,闭包,迭代器

本文从WordPress迁移而来, 查看全部WordPress迁移文章

阅读 programming in lua 第5,6,7章后总结

函数:

  • 当函数只有一个参数时,且这个参数是字符串或表构造时,() 是可选的

    这种调用可以节省一个()的输入,但意义不大,为统一代码风格,调用函数时,一律带上()

    以内建的print函数,以及一个示例函数 print_table 来体会一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
-- ok
print("gonglin91.com")
-- ok
print "gonglin91.com"
-- ok
a = "gonglin91.com"
print(a)
-- failed
a = "gonglin91.com"
print a

function print_table(t)
for key, value in pairs(t) do
print(key, value)
end
end
-- ok
print_table({a = "1", b = "2", c = "3"})
-- ok
print_table {a = "1", b = "2", c = "3"}
-- failed
t = {a = "1", b = "2", c = "3"}
print_table t
  • 调用函数时,传入的参数个数多于定义的个数,Lua不会报错,直接忽略多出来的参数;传入的参数少于定义的参数,Lua不会报错,用nil填充缺少的参数
1
2
3
4
5
6
7
function print_str(a_str, b_str)
print(a_str, b_str)
end
-- 不会报错,直接忽略"c"
print_str("a", "b", "c")
-- 不会报错,缺失的b用nil填充
print_str("a")