模块化和粒度 在理想的世界,一个程序应该只加载它需要的库.Penlight需要额外100 Kb 的字节码来工作.它是简单但却乏味要加载你需要什么: local data = require 'pl.data' local List = require 'pl.List' local array2d = require 'pl.array2d' local seq = require 'pl.seq' local utils = require 'pl.utils' 这是我在Penlight里一直…
列表压缩 列表压缩是以紧凑的方式通过指定的元素创建表.在 Python里,你可以说: ls = [x for x in range(5)] # == [0,1,2,3,4] 在 Lua,使用pl.comprehension : > C = require('pl.comprehension').new() > = C ('x for x=1,10') () {1,2,3,4,5,6,7,8,9,10} C是一个函数,它将一个列表字符串编译成一个函数.在这种情况下,该函数有没有参数.考虑一个字…
使用路径 程序不应该依赖于奇葩的系统,这样你的代码会难以阅读和移植.最糟糕的是硬编码的路径, windows和Unix的路径分隔符正好相反.最好使用path.join,它可以帮助你解决这个问题. pl.path提供了与Python中os.path里相同的功能. > p = 'c:\\bonzo\\DOG.txt' > = path.normcase (p) ---> only makes sense on Windows c:\bonzo\dog.txt > = path.sp…