Kotlin关键字操作符说明及使用示例与解释

Kotlin关键字操作符说明及使用示例与解释

Kotlin关键字目录

本篇文章作为快速入门kotlin的小指引,同时作为作者本人方便查询的文章,如有缺少或者错误的地方,希望大家在下方不吝赐教:

fun

  • 声明一个函数
// 无返回值
fun getName(){}
// 有返回值
fun getName():String{
 	return "name"   
}

val var

  • val 声明一个只读属性或局部变量
  • var 声明一个可变属性或局部变量
val a: Int = 1  // 立即赋值
val b = 2   // 自动推断出 `Int` 类型
val c: Int  // 如果没有初始值类型不能省略
c = 3       // 明确赋值

var x = 5 // 自动推断出 `Int` 类型
x += 1

as

  • 用于类型转换
/**
 * “不安全的”转换操作符 
 * 通常,如果转换是不可能的,转换操作符会抛出一个异常。因此,我们称之为不安全的
 */
val x: String = y as String

//null 不能转换为 String 因该类型不是可空的, 即如果 y 为空,上面的代码会抛出一个异常
val x: String? = y as String?

/**
 * “安全的”(可空)转换操作符
 * 为了避免抛出异常,可以使用安全转换操作符 as?,它可以在失败时返回 null:
 * 请注意,尽管事实上 as? 的右边是一个非空类型的 String,但是其转换的结果是可空的。
 */
val x: String? = y as? String
  • 为导入指定一个别名
/**
 * 当import 引用的包名出现重复时,我们可以使用as对其进行本地重命名来消歧义
 */
import org.example.Message // Message 可访问
import org.test.Message as testMessage // testMessage 代表“org.test.Message”

in

  • i in a…b 表示 i 是否在 a 到 b 区间
  • in 可以检查字符区间,对象区间(实例对象的类必须实现Comparable),集合
fun main(args: Array<String>){
    println('c' in 'a'..'d');
    println(1 in 0..100)
}
//要反向迭代数字,请使用 downTo 函数而不是 ..
for (i in 4 downTo 1) print(i)

//!in  用作中缀操作符以检测一个值不属于一个区间

is

  • 通过使用 is 操作符或其否定形式 !is 来检测对象是否符合给定类型
if (obj is String) {
    print(obj.length)// obj  自动转换为字符串
    //在许多情况下,不需要在 Kotlin 中使用显式转换操作符,因为编译器跟踪不可变值的 is-检测以及显式转换,并在需要时自动插入(安全的)转换:
}
if (obj !is String) { // 与 !(obj is String) 相同
    print("Not a String")
}else {
    print(obj.length)
}

When

  • when 表达式取代了类 C 语言的 switch 语句。其最简单的形式如下:
when (x) {
    0, 1 -> print("x == 0 or x == 1")
    2 -> print("x == 2")
    3 -> print("x == 3")
    else -> { // 注意这个块
        print("x is neither 1 nor 2")
    }
}

typealias

  • 类型别名为现有类型提供替代名称。 如果类型名称太长,你可以另外引入较短的名称,并使用新的名称替代原类型名
typealias NodeSet = Set<Network.Node>

typealias FileTable<K> = MutableMap<K, MutableList<File>>

//你可以为函数类型提供另外的别名:
typealias MyHandler = (Int, String, Any) -> Unit

typealias Predicate<T> = (T) -> Boolean

//你可以为内部类和嵌套类创建新名称:
class A {
    inner class Inner
}
class B {
    inner class Inner
}

typealias AInner = A.Inner
typealias BInner = B.Inner

data

  • 我们经常创建一些只保存数据的类,在 Kotlin 中,这叫做 数据类 并标记为 data
data class User(val name: String, val age: Int)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值