设为首页 加入收藏

TOP

KOTLIN开发语言文档(官方文档) -- 2.基本概念(二)
2017-10-12 10:08:09 】 浏览:6797
Tags:KOTLIN 开发 语言 文档 官方 基本 概念
ll。

另一种选择是用工厂函数获得数组尺寸,并且返回指定索引位置的数组元素的初始值:

1 // Creates an Array<String> with values ["0", "1", "4", "9", "16"]
2 val asc = Array(5, { i -> (i * i).toString() })

如上所述,[]操作符表示调用成员函数get()和set()。

注意:与Java开发语言不同,在Kotlin开发语言中,数组是不变量。这意味着kotlin开发语言不允许赋值Array<String>到Array<Any>,这防止运行的可能的错误(但是,可以用Array<out Any>,查看:类型推测(3.7.2))。

Kotlin开发语言也有专用类表示原始类型的数组,不需要装箱消耗:ByteArray、ShortArray、IntArray等等。这些类与Array类没有继承关系,但是它们有相同的一组方法和属性。它们中的每一个都有相应的工厂函数:

1 val x: IntArray = intArrayOf(1, 2, 3)
2 x[0] = x[1] + x[2]

2.1.5.   串

String类型表示串。String是不可变的。串的元素是字符,可以用索引操作访问:s[i]。可以用for循环遍历一个串:

1 for (c in str) {
2   println(c)
3 }

2.1.5.1. 串文字

Kotlin开发语言有两种串文字类型:包含转义字符的转义串和包含任意字符和新行符的原始串。转义串非常像Java开发语言的串:

1 val s = "Hello, world!\n"

转义可以用习惯的方法(用\)实现。

原始串由三引号(”””)定界的,包含非转义字符、新行符,以及其它任意字符:

1 val text = """
2   for (c in "foo")
3     print(c)
4 """

2.1.5.2. 串模板

串可以包含模板表达式,即:可计算的代码片段,其结果链接到串中。模板表达式以美元符号($)开始,和简单的名字构成:

1 val i = 10
2 val s = "i = $i" // 计算结果是 "i = 10"

或是在大括号中的任意表达式:

1 val s = "abc"
2 val str = "$s.length is ${s.length}" // 计算结果是 "abc.length is 3"

在原始串和转义串中,都支持模板。如果需要表达$字符文字,则可以用下列语法:

1 val price = "${'$'}9.99"

2.2.  包

一个源文件可以是从声明包开始的:

1 package foo.bar
2 
3 fun baz() {}
4 class Goo {}
5 // ...

源文件中的所有内容(如:类和函数)都包含在包的声明中。所以,在上面例子中,baz()的完整名称是foo.bar.baz,Goo的完整名称是foo.bar.Goo。

如果源文件中没有指明包,则这个文件中的内容属于没有名称的“默认”包。

2.2.1.   导入(import)

除默认的import外,每个文件都可以有自己的import伪指令。Import的句法在语法(6.2)中描述了。

我们既可以导入单个名称,如:

1 import foo.Bar // Bar is now accessible without qualification

也可以是范围内所有可访问的内容(包、类、对象等等):

1 import foo.* // everything in 'foo' becomes accessible

如果有命名冲突,可以在冲突项用as关键字重命名来消除:

1 import foo.Bar // Bar可以访问
2 import bar.Bar as bBar // bBar 表示 'bar.Bar'

import关键字不限制导入的类;也可以用途导入其它声明:

—— 顶层函数和属性;

—— 在对象声明(3.12.2)中声明的函数和属性;

—— 枚举常数(3.11);

不像Java开发语言,Kotlin开发语言没有独立的“import static”句法;所有这些声明都是用常规的import关键字来导入。

2.2.2.   顶层声明的可视范围

如果顶层声明标注private,它是它所在文件的私有的(查看:可视性修饰符(3.4))

2.3.  控制流

2.3.1.   if表达式

在Kotlin开发语言中,if是一个表达式,即:它返回一个值。由于在此规则下普通if运行的很好,因此没有三元运算符(?:else)。

 1 // 传统用法
 2 var max = a 
 3 if (a < b) 
 4   max = b 
 5  
 6 // 带else 
 7 var max: Int
 8 if (a > b) 
 9   max = a 
10 else 
11   max = b 
12  
13 // 作为表达式
14 val max = if (a > b) a else b

if分支可以是代码块,最后表达式是代码块的值:

1 val max = if (a > b) { 
2     print("Choose a") 
3     a 
4   } 
5   else { 
6     print("Choose b") 
7     b 
8   }

如果用if作为表达式,而不是语句(例如,返回它的值,或赋值给变量),表达式要求有else分支。

查看:if语法(6.2.3.4)

2.3.2.   when表达式

When替代了类似C开发语言的switch操作符。最简单形式如此:

1 when (x) {
2   1 -> print("x == 1")
3   2 -> print("x == 2")
4   else -> { // Note the block
5     print("x is neither 1 nor 2")
6   }
7 }

when将变量与其的所有分支顺序逐一匹配,直至找到条件相符的分支。when即可用作表达式,也可以用作语句,满足条件的分支值就是整个表达式的值。如果它用作语句,个别分支的值将被忽略。(就如同if,每个分支可以是一个代码块,代码块中最后的表达式值就是其值。)

else分支等价与没有其它分支满足条件。如果when用作一个表达式,且编译器无法验证分支条件覆盖了所有的可能情况,则强制性要求else分支。

如果多种情况都有相同的处理方法,也可以用逗号将分支条件组合起来:

1 when (x) {
2   0, 1 -> print("x == 0 or x == 1")
3   else -> print("otherwise")
4 }

可以用任意表达式(不仅仅是常数)作为

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android线程管理(二)——Activi.. 下一篇Android学习笔记--远程服务的使用

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目