Kotlin 教程 Kotlin koans

2015.12.31 14:30 Thu| 1512 visits | Text

Kotlin is good.
Kotlin 语法让从来没接触过函数式编程的我,有点措手不及。
怎么能快速的学习Kotlin呢?
除了查看官方Reference之外
我fork了Kotlin-koans库

Kotlin Koans are a series of exercises to get you familiar with the Kotlin Syntax. Each exercise is created as a failing unit test and your job is to make it pass.

Kotlin-koans 的目标是通过它所有的测试用例,在这个过程中,能快速的熟悉函数式编程方式,很快就可以掌握Kotlin的基本语法。

i_introduction

0_Hello world

从 hello world 开始

fun task0(): String {
    return "OK"
//    return todoTask0()
}

1_Java_To_Kotlin_Converter

很简单,把java代码改写成kotlin代码,也可以使用ide自动转化

public class JavaCode1 extends JavaCode {
    public String task1(Collection<Integer> collection) {
        StringBuilder sb = new StringBuilder();
        sb.append("{");
        Iterator<Integer> iterator = collection.iterator();
        while (iterator.hasNext()) {
            Integer element = iterator.next();
            sb.append(element);
            if (iterator.hasNext()) {
                sb.append(", ");
            }
        }
        sb.append("}");
        return sb.toString();
    }
}

4_Lambdas

这个我先是这么实现

fun task4(collection: Collection<Int>): Boolean = collection.any {  m -> m % 42 == 0 }

看到文档说lambdas如果只有一个参数的话默认参数可以用it来指代,可以简写成以下形式

fun task4(collection: Collection<Int>): Boolean = collection.any {  it % 42 == 0 }

Kotlin语法糖真是多。

其他有还有

  • ii_collections
  • iii_conventions
  • iv_properties

等等共八个模块41个Tests。

第41个是泛型相关的,这个我直接看答案了(羞愧。。)
我就不一一贴解法了,没意义,因为有官方Solution
直接看我的答案也行CodingPapi

Kotlin 是很高级的一种语言,可以从java无缝接入,能直接使用现有java库,转换基本无风险。现在接触的人不多,热度比Scala差很多。但是我相信,凭着它的轻量和平缓的学习曲线,一定会火起来的。