開發一個用來擲骰子的簡單領域特定語言(DSL)。玩《龍與地下城》這類遊戲的玩家對這種 DSL 並不陌生。舉例來說,下列運算式2 D20 + 1 D6代表我們要擲兩顆 20 面骰和一顆 6 面骰。
運算式2 d20 + 3 d10可以用 Pharo 語法實作。+就像其他方法一樣,可以實作在數字以外的類別上。像d20這樣的方法,可以透過類別擴充實作在既有的Integer類別上;類別擴充就是把方法定義在該類別所屬套件以外的另一個套件中。
這道練習取材自《Learning Object-Oriented Programming, Design and TDD with Pharo》一書,該書可在 http://books.pharo.org 取得。第 12 章:Crafting a simple embedded DSL with Pharo。