3.条件控制
-
if 表达式
kotlin中可以更加简便的使用 if语句进行赋值
var i = if(a > b) 1 else 2 var i2 = if(a > b) { print("Choose a") a } else { print("Choose b") b }
-
when的使用
when
在kotlin中,就是用来替代switch
的,如下:when (x) { 1,0 -> print("1 or 0") in 1..10 -> print("x is in the range") in validNumbers -> print("x is valid") !in 10..20 -> { print("x is outside the range") } else -> print("none of the above") } fun hasPrefix(x: Any) = when(x) { is String -> x.startsWith("prefix") else -> false } when { x.isOdd() -> print("x is odd") x.isEven() -> print("x is even") else -> print("x is funny") }
一般和lambda结合使用,箭头左侧代表条件,箭头右侧代表返回结果,可以是代码段,可以是代码块,
else
就是switch
中的default
。上面极端代码比较易懂,基本大家看了就知道怎么回事了 -
map
-
map初始化
一般我们使用
mapOf
方法进行初始化,方法中使用to
关键字代表关系```js val map = mapOf("a" to 1, "b" to 2, "c" to 3) ```
-
map遍历
kotlin中遍历map将变得特别方便
var map = mapOf( "1" to 2, "3" to 4) for((k,v) in map){ ... }
-
map访问
我们直接使用
["key"]
的形式访问map
中的元素,在kotlin中我们比较少的去使用get
方法,因为它很好的帮我们做了封装,基本所有的集合类都可以直接通过[]
的方式进行访问。 -
Map与MutableMap
在java中,
Map
是可以put
和get
的,但是在kotlin中,Map
是只读的映射,需要修改映射我们要使用到MutableMap
。而一般获得到MutableMap
最容易的方式就是调用Map
的toMutableMap
方法。因为通过mapOf
获得的方法都是Map
。这里需要着重说的一点是,如果我们直接通过系统自动的识别来认定属性的话,目前的几种封装
Map
都是可变Map
,前面说过一般能用不可变的Map
,就不用可变的集合类。@SinceKotlin("1.1") public actual typealias ArrayList<E> = java.util.ArrayList<E> @SinceKotlin("1.1") public actual typealias LinkedHashMap<K, V> = java.util.LinkedHashMap<K, V> @SinceKotlin("1.1") public actual typealias HashMap<K, V> = java.util.HashMap<K, V> @SinceKotlin("1.1") public actual typealias LinkedHashSet<E> = java.util.LinkedHashSet<E> @SinceKotlin("1.1") public actual typealias HashSet<E> = java.util.HashSet<E>
我们看到,这几个kotlin的对象,最终都是来自于java类,当然是即可访问又可以修改啦。
-
网友评论