首先,函数命名要user friendly,比如最常用的控制台输入输出,input scanf gets read readln readline print println writeline… 我专门询问了chatgpt,让它给出流行度百分比最高的组合(ai干这个最在行):input print,次常用的读写文本文件:read write,如此四个函数名就搞定了。
然后,功能相近的可以合在一个函数,比如,read有五种格式:
string read(number fp)null read(number fp, function cb)string read(string name)string read(string name, boolean iscmd)null read(string name, function cb)null read(string name, boolean iscmd, function cb)
可以用文件指针fp(fopen/popen)操作,也可以直接文件名/命令行(以iscmd区分,结束自动fclose/pclose)如果有cb,则为按行读,每一行作为参数调用cb,如果无,则读取整个文件作为返回值。
那么就可以很灵活地不同组合,比如print(read("foo.txt")),read("foo.txt", print)。
再比如正则表达式匹配array match(string str, string pat),可以利用展开语法和format函数一起实现替换功能:
print(format("${0}\n${1}\n${2}\n${3}",...match("Unknown-14886@noemail.invalid","^([\\w\\.-]+)\\@([\\w-]+)\\.([a-zA-Z\\w]+)$")));