木兰编程语言重现:通过玩三岁游戏完善语言功能
某个号称三岁以上就可以玩的桌游,抽象之后的基本问题就是在一个区域中如何摆放三种形状(朝向随意)。 比如区域: 三种形状(短折,长折,一字),各种朝向如下: 这是迄今为止用木兰语言编写的最复杂的实用代码,包括一个递归搜索,长约 150 行,测试约 70 行。其中一个类如下: 细节和算法有很大改进空间,欢迎指教。 期间根据需要复现了木兰的如下功能: == 操作符重载 type 点 { func $点(横, 纵) { self.横, self.纵 = 横, 纵 } operator == (另一点) { return self.横 == 另一点.横 and self.纵 == 另一点.纵 } } 可指定函数返回类型 type Person { { name = "小白" } func $__init__(name) { self.name = name } } func shout(id): Person { return Person(id) } print(shout("Mulan1").name) 根据范围取子列表 比如 a[...
