首先,函數命名要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]+)$")));