action是所有資料型別都必備的基本原生函數。你可以透過下面的方式取得完整的action列表:
>> probe system/catalog/actions
每個資料型別都有一個表格(類似C++的Virtual Table),記錄此型別專屬的所有action函數。目前每個資料型別的action表格內都有68個函數。
>> length? system/catalog/actions
== 68
當你使用action函數時,此action函數會根據參數的資料型別,來決定呼叫那個表格內的對應函數,其實這是一種Polymorphism。例如,當你呼叫subtract時,它會根據參數是整數或日期或其他,來決定使用哪一個資料型別action表格內的subtract函數。
如果你使用下面的方式觀察,你會發現實際上列出來的action!不只68個:
>> ? action!
那是因為許多action都可以輕易處理掉,不需要在action表格中準備特殊的函數。這類的action函數以查詢型別的函數為大宗,例如integer?、string?。
沒有留言:
張貼留言