Kotin系列2-Kotin的Domain Specified Language(DSL)

序言

开始学习Kotin了,Kotin的领域专用语言让我感觉很是喜欢。很久以前就对a equal b这样的表达感兴趣,这样的写法和自然语言很是相似。自然语言是我们一直在使用的,和自然语言越相似,理解的隔阂就越小。

Kotin的理念之一就是,你不需要做的事情,它不会强制你去做。这个就会使Kotin的很多写法比Java更加的简单。而且Kotin为了简化程序员的工作量,提高大家的生产力,它吸收了很多别的语言的优点。

这里我们就介绍一下Kotin的infix fun(中缀函数)。

Infix 函数

我想要实现a equal b这样的自然语言比较,在kotin里面是允许这样的,Infix就是解决方案。

fun main(args: Array<String>){
    1 eq  2
}

private infix fun Int.eq(d: Int) {
    println(Objects.equals(this, d))
}

Kotin的函数使用关键字fun修饰,上面的代码里面,我在main函数里面调用了eq函数,对于这个例子来说

1 eq 2 就相当于  1.eq(2)

但是1 eq 2更加接近于自然语言的方式。而这种实现就依赖于infix, 这里定义了一个函数eq,这个函数是Int的扩展函数,是的,这种语法类似于javascript,直接在一个类里面增加函数。这个函数的参数也是Int,参数类型的声明是使用冒号隔开了变量名和类型。这是Kotin里面定义参数的方式。

这里面还有一个关键字this,这个this就是当前的对象,在这个实例中就是第一个Int。

Kotin的这种函数定义和调用方式,可以使我们把代码写的更加的接近自然语言,这样就可以使别人更加容易读懂我们的代码,减少沟通的成本,从而提高我们的效率,当更加接近自然语言时,非编程人员也可以读懂我们的代码,这样更利于整个全队的沟通和合作。

总结

Kotin是一种面向对象和函数式的混合语言,它致力于简化程序员的工作,提高程序员的生产力,Infix函数给我了很大的惊喜,我相信随着我的学习和使用,Kotin会带给我更多的惊喜。

猜你喜欢

转载自blog.csdn.net/qisibajie/article/details/80473132
DSL