撰寫一個機器人模擬器。
某間機器人工廠的測試設施需要一支程式來驗證機器人的移動。
機器人有三種可能的移動:
機器人會被放在一個假想的無限網格上,面朝某個特定方向(北、東、南或西),並位於一組 {x,y} 座標上,例如 {3,8},座標值往北和往東遞增。
接著機器人會收到一連串指令,此時測試設施會驗證機器人的新位置,以及它面朝哪個方向。
在這道練習中,你可能會注意到骨架程式碼定義了 getter,例如 getX(),但測試卻直接以 .x 存取這個值。這是因為 Groovy 定義屬性的方式。我們來拆解一下:
關於 Groovy 屬性的重點:
final,則只會產生 getter)。在這道練習中,我們只指定了必要的 getter(因此依照上述說明,也就指定了對應的屬性),以確保你正確實作。你可以自由決定哪些欄位(以及它們的型別)最適合你的解法。
如果你想進一步探索欄位和屬性的主題,請參閱 Groovy 文件中的 第 3.3 章 欄位與屬性。