手把手教你实现一门运行在 JVM 上的语言 Enkel, 系列 4
/ / 点击 / 阅读耗时 2 分钟本文系 Creating JVM language 翻译的第四篇。
原文中的代码和原文有不一致的地方均在新的代码仓库中更正过,建议参考新的代码仓库。
上一节中,我们已经实现了 Enkel 语言的原型实现。本章我们需要定义好 Enkel 的语言特性。
众所周知,Java 中有很多冗余的部分。Java 尽可能的避免让你犯错,因此我们有时候需要写大量的重复性代码。
我们的目标是让 Enkel 尽可能的简单。简单带来的缺点显而易见,但是对于实现语言原型,是个不错的选择。
下面我们定义了 Enkel 语言的和新特性。
特点 | 示例 |
---|---|
一个文件代表一个类,无需使用 class 关键字来声明类名,只需要在 import后提供类型 | Car {} |
继承 | Car : Vehicle {} |
可选的自动生成 getters,setters,builder,equals,hashcode | Car(getters,setters,hashequals,builder) : Vehicle {} |
类型推断 | var x = 5 |
默认参数 | fun createPoint(Int x=0, Int y = 0) |
可选参数命名,这在函数调用指明参数的时候非常有用 | createPoint(5,0) createPoint(x->5,y->0) createPoint(y->0,x->5) |
函数也是对象(函数是一等公民) | const f = (Int x=0, Int y=0) => x*y |
没有静态方法 | |
默认用 == 替代 equals | object1 == object2 |
全文完。