大家好,欢迎加入小李君的Kotlin学习之旅。今天是小李君学习Kotlin的第三天,本文将复习Kotlin语法糖的Basic Syntax,加深印象。本文分为Sample_1和Sample_2两篇,本篇为Sample_1。
昨日回顾:
- 访问官网https://kotlinlang.org
- 点击learn,看Reference文档
- 快速看完Overview经文,仔细研读Getting Started - Basic Syntax
今日内容:
- 访问官网https://try.kotlinlang.org
- 练习Hello World例程 (Sample Program)
- 练习Basic Syntax walk-through例程
第一步:
- 访问官网https://try.kotlinlang.org
- 打开你的JetBrain IDEA
- 千万不要复制粘贴官网例程到你的IDEA,欲速则不达。
第二步:
练习Hello World例程
Simplest version.kt
注释翻译:
我们声明了一个包级的主函数,这个函数返回了Unit,而且还以一个字符串数组作为形参。提示,分号是可选的,写不写没关系。
例程解释:
main(),主函数,打印了hello world字符串。
特别注意:
再次强调,分号是可选,而且不要纠结注释中提及的Unit是什么。
Reading a name from the command line.kt
注释翻译:
第18行(原13行,被我的翻译挤下去了)的代码演示了如何使用字符串模板和数组访问。想看更多的细节请访问以下地址:
- http://kotlinlang.org/docs/reference/basic-types.html#strings
- http://kotlinlang.org/docs/reference/basic-types.html#arrays
例程解释:
main(),主函数,先判断args字符串数组空间是否为0,若是,则打印提示信息并退出主函数,否则,使用字符串模板,注入args[0],打印信息。
特别注意:
字符串模板技术可以追溯到Linux命令的展开技术(shell expansion)。
字符串模板那些往事儿如下:
- Linux命令大全 http://linuxcommand.org/lc3_lts0080.php
- GNU手册 https://www.gnu.org/software/bash/manual/bash.html#Shell-Expansions
Reading many names from the command line.kt
注释翻译:
第12-13行演示了一个增强版的for循环体,其实就是foreach。如果想看其他for循环体请看:
例程解释:
main(),主函数,for循环打印args数组的所有元素。
特别注意:
name没有类型声明,也没有val或var修饰。
A multi-language Hello.kt
注释翻译:
在这里例子里边,‘val’意味着一个只读局部变量的声明,其实就是常量
这个常量被赋值了一个字符串,如EN
这个字符串通过when表达式的匹配,得出对应的字符串,如Hello!
欲查看when表达式,请看:
例程解释:
main(),主函数,先判断args数组空间是否为0,若是,则赋值0到常量language,否则,获取args数组第一位元素并赋值到language。通过when表达式字符串匹配与language对应的字符串,并打印出来,如language=FR,则打印Salut。
特别注意:
这个例程出现了两个表达式,if表达式,when表达式。
if表达式如同三目运算符,when表达式如同switch case。
An object-oriented Hello.kt
注释翻译:
这里我们写了一个类,这个类自带一个构造函数(对象的构造器)以及一个成员函数(对象的方法)。提示,kotlin根本不需要new一个对象,而是类似简单工厂方法那样直接调用方法(构造器)获得新的对象。
想了解更多类的知识请看:
例程解释:
class Greeter,Greeter类,有一个字段name和一个方法greet(),greet()方法打印Hello, ${name}。
main(),主函数,new一个Greeter类的对象,其构造器传入args[0],并调用方法greet()。
特别注意:
小李君学习Kotlin以来,第一次遇到Kotlin class。小李君认为这个class的机制与Javascript的ES5以前的function类机制很像,类体本身就是构造器,这种语法实在非常简练,小李君非常喜欢。
交作业啦
这是小李君为这次sample学习而写的代码,github地址如下:
还是那句话,不要复制粘贴人家官网例程的代码,而是自己对着这些代码一步步敲出属于自己的代码。
还有 Sample_2,一会儿更。