解析Kotlin-koans学习kotlin编程(一)

源起

从C#转java,写了一段时间之后觉得超级啰嗦,借着Kotlin成为了android开发的官方语言的契机发现kotlin也许能成为c#转java的程序员的福音。
在学习kotlin的过程中发现了Kotlin-koans这个官方练习很有意思,所以接下来会写一系列的博文来记录学习的过程。
koans 的意思是以心传心,所以这个项目名就真的太传神了。这个项目就是让你通过一系列有针对性的练习来熟悉Kotlin的语法。这些练习都是TDD的,也就是编程让失败的单元测试可以通过。本系列文章会结合kotlin-koans里的41个练习点来逐个展开与大家一起学习kotlin,争取不烂尾。
kotlin-koans:https://github.com/Kotlin/kotlin-koans

准备工作

java jdk

首先你得有java,1.6+

$  java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

kotlin作为jetbrains自家孩子当然还是用jetbrains的idea来最为顺手,天生就有ide支持的语言除了c#有过这种待遇好像就没有其他了。而kotlin-koans是用gradle构建的,所以你需要准备好idea和gradle。idea没什么好说的,主要是gradle在我朝是一个非常麻烦的事,虽然它有一万种方法(都不怎么行得通)

gradle的一万种安装方法
1. SDKMAN方式

sdkman适用于*nix系统,windows上还要依赖zip与unzip。

$ sdk install gradle 4.5.1

HomebrewmaxOS系统,这也是比较可行的一种方式。

$ brew install gradle

Scoop 是 Homebrew在windows上的替代品,但是要在powershell里,相当难用起来.

$ scoop install gradle

最后是我非常推荐的Chocolatey windows下面一种比较好的安装软件的方式,具体的可以看我的博文《windows上更酷的软件安装方式—chocolatey》

$ cinst -y gradle

由于万能的墙的存在,上面的方式基本都是看人品。

最后我们推荐手工安装最保险(手工滑稽 -_-#)。
git上来下来项目后,用idea导入会自动下载gradle,打开目录gradle下的gradle-wrapper.properties看到distributionUrl=https://services.gradle.org/distributions/gradle-3.0-all.zip,使用其他工具去这个地址下载,然后把zip包不解压,直接放到C:\Users\用户.gradle\wrapper\dists\gradle-3.0-all\6v8c6qg2jpi8twyfv2a5s9mii目录下(6v8c6qg2jpi8twyfv2a5s9mii是一个随机值),然后关闭idea再次打开项目即可完成。

开启学习之旅

Kotlin-koans项目有2个分支,master分支是我们要完成的任务,可以理解为我们要完成的试卷, resolutions 分支是我们的答案,所以确保答题完再去看这个分支,别作弊!!!
src目录是我们要去实现每一个task的目录:

├─iii_conventions
├─ii_collections
├─iv_properties
├─i_introduction
│  ├─_0_Hello_World
│  ├─_10_Object_Expressions
│  ├─_11_SAM_Conversions
│  ├─_12_Extensions_On_Collections
│  ├─_1_Java_To_Kotlin_Converter
│  ├─_2_Named_Arguments
│  ├─_3_Default_Arguments
│  ├─_4_Lambdas
│  ├─_5_String_Templates
│  ├─_6_Data_Classes
│  ├─_7_Nullable_Types
│  ├─_8_Smart_Casts
│  └─_9_Extension_Functions

test目录对应就是测试代码,我们task的目标就是让测试通过。

伟大的语言都是从Hello_World开始。Kotlin-koans的第一个task旨在帮助你熟悉它的环境以及工作方式。
task0的代码如下:

fun task0(): String {
    return todoTask0()
}

对应task0的测试代码如下:

    @Test fun testOk() {
        assertEquals("OK", task0())
    }

在idea中打开task0的测试,点击测试案例前面的按钮可以单独运行这个测试。


image.png

这里运行结果肯定是不通过的,也可以通过命令行的方式来运行测试:
$ ./gradlew test --tests i_* # run tests in part 1

我们修改task0的代码如下:

 fun task0() = "OK" 

接下来再重复上面的运行测试步骤,这次就可以通过了,这样一个task就顺利完成了。


image.png

一些资源

Kotlin 在线教程
Kotlin 资源大全 - 学 Kotlin 看这一篇教程就够了
kotlin知乎专栏

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容