轨道
/
Groovy
Groovy
/
练习
/
机器人模拟器
机器人模拟器

机器人模拟器

简单

说明

编写一个机器人模拟器。

一家机器人工厂的测试设施需要一个程序来验证机器人的移动。

机器人有三种可能的移动方式:

  • 向右转
  • 向左转
  • 前进

机器人被放置在一个假想的无限网格上,面朝某个特定的方向(北、东、南或西),并位于一组 {x,y} 坐标处,例如 {3,8},坐标向北和向东递增。

随后,机器人会收到若干条指令,此时测试设施会验证机器人的新位置,以及它面朝的方向。

  • 字母串“RAALAL”表示:
    • 向右转
    • 前进两次
    • 向左转
    • 前进一次
    • 再向左转一次
  • 假设一个机器人从 {7, 3} 出发,面朝北。 那么执行这串指令后,它应该停在 {9, 4},面朝西。

Groovy 中的属性和字段

在本练习中,你可能已经注意到,桩代码里定义了 getX() 这样的 getter,但测试却直接用.x访问这个值。这是因为 Groovy 定义属性的方式。我们逐条来看:

  • 字段是类、接口或 trait 的成员,用于存储数据。
  • 属性是类对外可见的特性。

关于 Groovy 属性的几个要点:

  • Groovy 会自动为非私有字段生成 getter 和 setter(如果字段被标记为final,则只生成 getter)。
  • 属性可以按名称访问(就像本练习的测试那样),访问时会透明地调用对应的 getter 或 setter。
  • 按照惯例,即使没有实际存储数据的字段,只要存在 getter 或 setter,Groovy 也会把它识别为属性。

在本练习中,我们只指定了必需的 getter(按照上面的说法,也就是必需的属性),以此确保你正确实现。至于选择哪些字段(以及它们的类型)最合适,由你自己决定。

如果你想进一步了解字段和属性,请参阅 Groovy 文档中的第 3.3 章 字段与属性。


来源

灵感来自一家知名公司的面试题。
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Groovy Exercism

准备好开始 机器人模拟器 了吗?

注册 Exercism,借助 66 个练习 和真人导师指导,学习并掌握 Groovy,全部免费。