相信学过C++/Kotlin的同志都知道,这两门语言都支持参数默认值,这其实是非常好用的,所以结绳中文编程也引入了这个特性。
举例(伪代码):
1 | class MyUtils |
可以发现,第三个具有默认值的参数可以被省略,这会极大地方便代码编写,以及减少方法重载的数量。
我们来看结绳4.0的实现原理:
首先,了解语法树的同志都知道,在进行语法树标注的时候会标注到方法调用表达式(MethodInvocation)
这个时候,我们先不进行参数检查,而是去填充默认参数,从索引0开始,逐一扫描调用参数,如果为空,则填充为默认参数,
如果调用参数不足,而方法定义的形式参数还有剩余,则继续扫描剩下的形式参数所具有的默认值,加到调用参数集的末尾,
填充默认参数值就此完成,接下来就是正规的检查参数流程了,具体过程不再赘述。