vlambda博客
学习文章列表

读书笔记《functional-kotlin》科特林的快速入门

Chapter 14. Kotlin's Quick Start

本书适用于已经熟悉 Kotlin 工作方式的人。但是,如果您对这门语言完全陌生,请不要担心,我们为您提供了阅读、理解和充分利用这本书所需的一切。

在本附录中,我们将涵盖以下主题:

  • Different ways to use Kotlin
  • Basic Kotlin control structures
  • Other resources

Writing and running Kotlin


我们将介绍一整套用于编写和运行Kotlin的选项,从最简单的< id="id288339415" class="indexterm"> 给最专业的。

Kotlin online

无需安装,只需打开 Kotlin (https://try.kotlinlang.org/) . Kotlin 在线包含您编写和运行简单 Koltin 程序所需的一切,包括 JVM 和 JavaScript 编译选项。如果您有一个帐户,您甚至可以创建和保存您的程序:

读书笔记《functional-kotlin》科特林的快速入门

On your console

对于任何严肃且注定要在生产代码中使用的东西,在线选项并不是最佳选择。让我们探索如何在您的机器上安装它。

Installing SDKMAN

安装 Kotlin 最容易使用的选项是使用 SDKMAN,这是一种用于安装和更新 JVM 工具的工具。

使用以下命令安装 SDKMAN(如果您没有安装它):

$ curl -s "https://get.sdkman.io" | bash

安装 SDKMAN 后,我们可以使用它来安装 Kotlin 并保持更新,以及 Gradle 和 Maven 等其他工具。

Installing Kotlin through SDKMAN

要通过 SDKMAN 安装 Kotlin,您只需需要 键入以下内容:

$ sdk install kotlin

现在我们的控制台中有 Kotlin 命令。

Kotlin's REPL

要使用 Kotlin 的 REPL,您可以输入 以下内容:

$ kotlinc

现在您可以键入并执行 Kotlin 表达式:

$ kotlinc
Welcome to Kotlin version 1.2.21 (JRE 1.8.0_111-b14)
Type :help for help, :quit for quit
>>> println("Hello, World!")
Hello, World!
>>> 

要退出 Kotlin 的 REPL,你可以输入 :quit

Compiling and executing Kotlin files

有几个 编辑器 支持 Kotlin——Micro、Vim、NeoVim、Atom 和 VS Code。

我的首选 editor 是 Micro,(https://micro-editor.github.io/index.html)。它是一个快速且易于使用的编辑器(有点像功能强大的 Nano):

读书笔记《functional-kotlin》科特林的快速入门

在您喜欢的编辑器中,创建一个名为 hello.ktfile 并输入以下代码:

fun main(args: Array<String>) {
    println("Hello, World!")
}

现在在您的控制台中,使用以下命令编译您的程序:

$ kotlinc hello.kt

要执行它,请在控制台中输入:

$ kotlin HelloKt

Using Gradle

对于任何超出几个文件的项目,构建工具 成为必需品。构建工具为您提供了一种编译、管理库以及打包和执行应用程序的实用方法。 Gradle (https://docs.gradle.org/current/release- notes.html) 是一个构建工具,支持 多种语言,包括 Kotlin。

Install Gradle through SDKMAN

要通过 SDKMAN 安装 Gradle,您只需需要 键入以下内容:

sdk install gradle

现在我们的控制台中有 gradle 命令可用。

Creating a distributable Gradle command

虽然 Gradle 是一个很棒的工具,但要共享依赖于要构建的 Gradle 的代码并不容易。我们开源项目的潜在用户可能没有安装 Gradle,甚至没有安装与我们相同的 Gradle 版本。幸运的是,Gradle 提供了一种创建可分发 Gradle 实用程序或命令的方法。

在一个新的干净目录中,在控制台中键入:

$ gradle wrapper

此命令创建一个可以执行的 gradlew 脚本。第一次运行该命令时,它会下载所有必要的 Gradle 文件,然后成为可重复的命令。

Creating a Gradle project file

为了使 Gradle 工作,我们必须有一个 build.gradle 文件。在这个文件中,我们将为 Gradle 设置不同的选项和设置以供使用和运行。

对于我们的基本 Hello World 程序,我们的文件必须如下所示:

group 'com.packtpub'
version '1.0'

buildscript {
    ext.kotlin_version = '1.2.21'

    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

apply plugin: 'kotlin'
apply plugin: 'application'

mainClassName = 'com.packtpub.appendix.HelloKt'

defaultTasks 'run'

repositories {
    mavenCentral()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

通常,在 build.gradle 文件中,我们定义了一些插件(Gradle 插件定义了对语言和框架的支持)、用于下载依赖项的存储库、依赖项本身以及其他选项。

在这个文件中,我们定义了两个插件——一个用于 Kotlin,另一个用于将我们的项目定义为具有起始点或主类的应用程序。

Creating our Hello World code

Gradle 搜索 Kotlin 文件的默认位置是在 src/main/kotlin< /代码>目录。我们将把 hello.kt 文件放在   src/main/kotlin/com/packtpub/appendix目录:

package com.packtpub.appendix

fun main(args: Array<String>) {
    println("Hello, World!")
}

现在我们可以使用以下命令一次性编译和运行:

$ ./gradlew

正如我们定义的,我们的默认任务是 run 而我们的主类是 com.packtpub.appendix.HelloKt,只需运行 < code class="literal">./gradlew 我们可以构建和运行我们的 peogram。

Using IntelliJ IDEA or Android Studio

IntelliJ IDEA 和 Android Studio(基于 IntelliJ IDEA 的开源版本)是 Kotlin(以及其他语言,例如 Java、Scala、Groovy 等)。两者都提供 自动完成、格式化和对Gradle 和Maven 的支持。

这两个 IDE 都有很好的文档记录,您可以阅读更多关于 在他们的网站上支持 Kotlin:

Importing Gradle files with IntelliJ IDEA

我们可以在 IntelliJ IDEA 中导入我们的 Gradle 项目。一旦我们start IDEA,我们可以打开我们的build.gradle文件:

读书笔记《functional-kotlin》科特林的快速入门

将出现一个对话框,询问您是将其作为文件还是作为项目打开。点击 Open As Project

读书笔记《functional-kotlin》科特林的快速入门

如果您安装了 JDK 并在 IntelliJ IDEA 上进行了设置,则只需单击 OK。如果您没有配置 JDK,请执行此操作(IntelliJ IDEA 将引导您完成),然后继续 OK

读书笔记《functional-kotlin》科特林的快速入门

现在我们可以使用所有 IntelliJ IDEA 功能编辑和处理我们的项目:

读书笔记《functional-kotlin》科特林的快速入门

你可以用同样的方法打开本书中的所有示例代码。

Basic Kotlin syntax


Kotlin 语法对于具有基于 C 样式语法的其他语言的 经验 的开发人员来说会很熟悉,例如 C、Java、Scala、 Groovy 和 TypeScript。

General features

各种 Kotlin 特性在其他 JVM 语言中很常见。如果您有 Java 的经验,那么您会对 Kotlin 感到宾至如归。

Packages

包是define 逻辑单元(例如控制器和存储库)的文件集(通常定义在同一目录中)。

要在特定包中设置文件,请在第一行使用 package 关键字 :

package com.packt.functionalkotlin

理想情况下,包 com.packt.functionalkotlin 中的文件应该在目录 com/packt/functionalkotlin 中。它使文件更容易找到,但在 Kotlin 中不是强制性的。

String concatenation and interpolation

Kotlin 中的字符串 concatenation 使用加号 (+) 运算符:

val temperature = 12

println("Current temperature: " + temperature + " Celsius degrees")

字符串插值是进行 complex 连接的简单方法:

val temperature = 12

println("Current temperature: $temperature Celsius degrees")

使用符号美元 ($) 可以让您在字符串中使用简单的值:

val temperature = 12

println("Temperature for tonight: ${temperature - 4} Celsius degrees")

对于任何比使用值更复杂的事情,您可以使用带大括号的美元符号 (${... }):

Comments 

单行 comments 使用双斜杠(//):

// This is a single line comment

println("Hello, World!") // This is a single line comment too, after valid code

块注释使用斜线和星号打开块 (/*) 和 asterisk 和斜线关闭 (*/):

/*
This is a multi-line comment,
Roses are red
... and I forgot the rest

*/

println(/*block comments can be inside valid code*/ "Hello, World!")

Control structures

有四种基本的control结构in Kotlin——ifwhenfor和  ;while

if expression

Kotlin 中的 if 看起来 完全是 与任何其他 C 风格的语言一样:

if (2 > 1) { //Boolean expression
    println("2 is greater than 1")
} else {
    println("This never gonna happen")
}

在 Kotlin 中, if(和 when)是一个表达式。这意味着 if 语句返回一个值:

val message = if (2 > 1) {
    "2 is greater than 1"
} else {
    "This never gonna happen"
}

println(message)

Kotlin 没有三元表达式,但 if 表达式可以写在一行中:

println(if(2 > 1) "2 is greater than 1" else "This never gonna happen")

when expression

与其他 C 风格的语言不同,Kotlin 没有 switch语句,而是一个更灵活的 when 表达式:

val x: Int = /*Some unknown value here*/

when (x) {
    0 -> println("x is zero")
    1, 2 -> println("x is 1 or 2")
    in 3..5 -> println("x is between 3 and 5")
    else -> println("x is bigger than 5... or maybe is negative...")
}

when 是表达式:

val message = when {
    2 > 1 -> "2 is greater than 1"
    else -> "This never gonna happen"
}

println(message)

它们也可以用来替换 if 表达式:

for loop

for 循环可以迭代任何提供 迭代器(例如,集合和范围):

for(i in 1..10) { // range
    println("i = $i")
}

while and do loops

whiledo 循环是标准 C 风格的循环:

var i = 1

while (i <= 10) {
    println("i = $i")
    i++
}

do {
    i--
    println("i = $i")
} while (i > 0)

既然您已经掌握了所有基本部分,那么您就拥有了阅读和理解本书内容所需的一切。

Going further


如果您想提高您对 Kotlin 的知识和理解,最好的方法是尝试 Kotlin Koans。

Kotlin Koans 是一个教程,将引导你在几天内从一个菜鸟一步步成为一个非常称职的 Kotlin 程序员,更棒的是,它是免费的。

您可以在 Koans #/Kotlin%20Koans/Introduction/Hello,%20world!/Task.kt" target="_blank">https://try.kotlinlang.org/#/Kotlin%20Koans/Introduction/Hello,%20world!/Task. kt:

读书笔记《functional-kotlin》科特林的快速入门