其實只是自己取的名字
用來執行一個自制的特殊語言的直譯器
能做到Ruby部份能做的事
在講解這個直譯器之前
要先講解一下這個特殊語言的語法
#標籤 指令 運算元1,運算元2,...
標籤可有可無
運算元用逗號分開
整數,浮點數
"$"開頭的是變數名稱
":"開頭的是Ruby符號
"#"開頭是標籤
最後還有用雙引號的字串可以用
先把程式碼讀進來
分析語法並且存成內部表示
執行時依照指令執行對應的動作
常規表達式 Regexp
匿名函式 Proc
Regexp
英文為Regular Expression
實際上這個東西博大精深
只要知道可以用來表達文字出現的一個規則
可以用來比對字串
使用 // 夾住一個Regexp
?代表出現0,1次 +是1次以上 *是0次以上
[]代表一個字的可能 ()是分組
\d是[0-9] \w是[A-Za-z0-9_]
\s是空白 \S是非空白 還有萬用字元.
整數最前面可以有正負號
數字部份可能是0
或者是非0的開頭後面加上任意數字
/[-+]?(0|([1-9]\d*))/
浮點數和整數很像但是後面還有數字
/[-+]?(0|([1-9]\d*))\.\d+/
因為小數點是萬用字元所以要跳脫
Proc
這是一個可執行的特殊物件
可以被呼叫
其實Proc還有類似的東西
但是比較進階在此不談
block,lambda,proc...
->(arg1,arg2,...){ do_sonthing }
要給予參數以及可執行的內容
因為是物件所以可以在方法中間傳來傳去
所以一個物件裏面可能是不同的Proc
個人是寫遊戲時想到可以用來當技能基底用...