对“元编程”很陌生
// 电话号码的形式 -- 在文件phonebook.txt中
{
"Bob Smith" : "5195551212",
"Mary Walsh" : "4162223434"
}
// 把列表代碼解釋為Io散列表的形式
OperatorTable addAssignOperator(":", "atPutNumber")
curlyBrackets := method( // 遇到大括号就就调用curlyBrackets方法
r := Map clone // 建立空映射
call message arguments foreach(arg,
r doMessage(arg)
// doMessage(arg) 调用atPutNumber
// 将"Bob Smith" : "..." 变成 atputNumber("Bob Smith", "...")
)
r // 程序最终返回r
)
Map atPutNumber := method(
self atPut(
call evalArgAt(0) asMutable removePrefix("\"") removePrefix("\""),
call evalArgAt(1)
)
s := File with("phonebook.txt") openForReading contents // 打开文件的一套操作
phoneNumbers := doString(s) // 将文件的内容变成Io代码(字符串)
phoneNumbers keys println
phoneNumbers values println
)
DSL相关内容
The End