分类目录归档:kotlin

Kotlin返回与跳转


Kotlin 有三种结构跳转表达式:

-- return 默认情况下从最近的闭合函数或者匿名函数返回。 -- break 结束最近的闭合循环
-- continue 跳到最近的闭合循环的下一次循环

上述表达式都可以作为更大的表达式的一部分:

val s = person.name ?: return

这些表达式的类型是 Nothing type

break 和 continue 标签

Kotlin 中任意表达式可以添加标签。标签通过 @ 结尾来标识,比如:abc@fooBar@ 都是有效的参看语法。使用标签表达式,只需像这样:

loop@ for (i in 1..100){
  ...

阅读全文...

kotlin包


代码文件以包声明开始:

package foo.bar

fun bza() {}

class Goo {}

//...

代码文件的所有内容(比如类和函数)都被包含在包声明中。因此在上面的例子中, bza() 的全名应该是 foo.bar.bzaGoo 的全名是 foo.bar.Goo

如果没有指定包名,那这个文件的内容就从属于没有名字的 "default" 包。

默认导入

许多包被默认导入到每个Kotlin文件中:

-- kotlin.*

-- kotlin.annotation.*

-- kotlin.collections.*

-- kotlin.comparisons...

阅读全文...

Kotlin流程控制: if , when , for , while


if 表达式

在 Kotlin 中,if 是带有返回值的表达式。因此Kotlin没有三元运算符(condition ? then : else),因为 if 语句可以做到同样的事。

// 传统用法
var max = a
if (a < b) max = b

// 带 else
var max: Int
if (a > b) {
    max = a
}
else{
    max = b
}
// 作为表达式
val max = if (a > b) a else b

if分支可以作为块,最后一个表达式是该块的值:

val max = if (a > b)...

阅读全文...

Kotlin基本类型


在 Kotlin 中,所有的东西都是对象,这就意味着我们可以调用任何变量的成员函数和属性。一些类型是内建的,它们的实现是优化过的,但对用户来说它们就像普通的类一样。在这节中,我们将会讲到大多数的类型:数值,字符,布尔,以及数组。

数值

Kotlin 处理数值的方法和 java 很相似,但不是完全一样。比如,不存在隐式转换数值的精度,并且在字面上有一些小小的不同。

Kotlin 提供了如下内建数值类型(和 java 很相似):

类型 位宽
Double 64
Float 32
Long 64
Int 32
Short 16
Byte 8

注意字符在 K...

阅读全文...

kotlin编码规范


本页包含了当前 kotlin 语言的代码风格。

命名风格

如有疑惑,默认为Java编码约定,比如:

--使用骆驼命名法(在命名中避免下划线)

--类型名称首字母大写

--方法和属性首字母小写

--缩进用四个空格

--public 方法要写说明文档,这样它就可以出现在 Kotllin Doc 中

冒号

在冒号区分类型和父类型中要有空格,在实例和类型之间是没有空格的:

interface Foo<out T : Any> : Bar {
    fun foo(a: Int): T
}

Lambdas

在 Lambdas 表达式中,大括号与表达式间要有空格,箭头与参数和函数体...

阅读全文...

Kotlin常用术语


这里是一些在 Kotlin 中经常使用的习语。如果你有特别喜欢的习语想要贡献出来,赶快发起 pull request 吧。

创建DTOs(POJOs/POCOs) 数据类

data class Customer(val name: String, val email: String)

创建 Customer 类并带有如下方法:

--为所有属性添加 getters ,如果为 var 类型同时添加 setters --equals() --hashCode() --toString() --copy() --component1() , component1() ,

函数默认...

阅读全文...

kotlin基本语法


kotlin包定义

在源文件的开头定义包:

package my.demo
import java.util.*
//...

包名不必和文件夹路径一致:源文件可以放在任意位置。

kotlin定义函数

定义一个函数接受两个 int 型参数,返回值为 int :

fun sum(a: Int, b: Int): Int {
    return a + b
}

只有一个表达式作为函数体,以及自推导型的返回值:

fun sum(a: Int, b: Int) = a + b

返回一个没有意义的值:

fun printSum(a: Int, b: Int): Unit {
  printl...

阅读全文...