3-1 常量与变量(val,var)
1)什么是常量
❥ val = value, 值类型
❥ 类似Java的final
❥ 不可能重复赋值
❥ 举例:运行时常量:val x = getX()
编译期常量:const val x = 2
编译器常量 必须用const 关键字,值类型,类似于Java里面的final类型。
2)什么是变量
❥ var = variable
❥ 举例: var x = “HelloWorld” // 定义变量
x = “HiWorld” // 再次赋值
3)类型推导
❥编译器可以推导量的类型
─ val string = “Hello” // 推导出String类型
─ val int = 5 // Int类型
─ var x = getString() + 5 // String类型
3-2 函数(function)
任何函数都以 fun 开始,args是main函数的参数,参数类型是Array<String>。如果参数多的话可以用逗号隔开,这个函数没有返回值。
没有返回值的话,实际上返回的是 Unit,相当于Java里面的void。
大括号里面是函数体。
fun main(args: Array<String>):Unit { println(FINAL_HELLO_CHINA); }
Unit 可以省略不写,如下所示
fun main(args: Array<String>) {
println(FINAL_HELLO_CHINA); // 输出结果:HelloChina
}
范例:下面写一个 1 + 2 = 3
fun main(args: Array<String>) {
checkArgs(args)
val arg1 = args[0].toInt()
val arg2 = args[1].toInt()
println("$arg1 + $arg2 = ${sum(arg1, arg2)}")
}
fun checkArgs(args: Array<String>) {
if (args.size != 2) {
printUsage()
System.exit(-1)
}
}
fun printUsage() {
println("请传入两个整型参数,例如 1 2")
}
概念:什么是函数 ?
❥ 以特定功能组织起来的代码块:
--- fun[函数名]([参数列表]):[返回值类型]{ [函数体] }
--- fun[函数名]([参数列表]) = [表达式]
❥ 举例:
--- fun sayHi(name:String) { println("Hi, $name") }
--- fun sayHi(name:String) = println("Hi, $name")
❥ 匿名函数:
无名氏一直是神一样的存在;
fun([参数列表])...
举例: ---- val sayHi = fun(name:String) = println("Hi, $name") 注意:如果不赋值给一个变量是会报错的。
❥ 编写函数注意事项
功能要单一;
函数名要做到顾名思义;
参数的个数不要太多;( 参数太多虚拟机的运行效率大打折扣、不易读 )
3-3 Lambda表达式 (就是匿名函数)
fun main(args: Array<String>) {
printlnHello();
println(sum(1, 3))
println(sum.invoke(1, 3))
// 以上两个输出 结果是一样的。
}
/**
* 定义 Lambda表达式
* arg1 + arg2 就是 Lambda表达式 返回值
*
* 返回类型:(Int, Int) -> Int
*/
val sum = { arg1: Int, arg2: Int ->
println("$arg1 + $arg2 = ${arg1 + arg2}")
arg1 + arg2
}
/**
* 定义 Lambda表达式
*
* 返回类型:()-> Unit
*/
val printlnHello = {
println("Hello")
}
以下是输出结果:
Hello
1 + 3 = 4
4
1 + 3 = 4
4