文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
基本语法
定义包名
包名应该在源文件的最开头:
package my.demo
import java.util.*
//...
包名不必和文件夹路径一致:源文件可以放在任意位置。
定义函数(方法)
该函数接受俩个 int 型参数,并返回一个 int :
fun sum(a: Int , b: Int) : Int{
return a + b
}
该函数有一个表达式函数体以及一个推断型的返回值:
fun sum(a: Int, b Int) = a + b
要想函数在模块外面可见就必须有一个确定的返回值:
public fun sum(a: Int, b: Int): Int = a + b
函数返回一个没有意义的值:
fun printSum(a: Int, b: Int): Uint{
print( a + b)
}
Uint 的返回类型可以省略:
fun printSum(a: Int, b: Int){
print( a + b)
}
更多请参看 函数
定义局部变量
声明静态变量(只读):
val a: Int = 1
val b = 1 //推导出 Int 型
val c: Int //当没有初始化值时类型是必须声明的
c = 1 // 赋值
可变的变量:
var x = 5 //推导出 Int 型
x += 1
更多请参看 属性和字段
使用字符串模板
fun main(args: Array<String>) {
if (args.size() == 0) return
print("First argument: ${args[0]}")
}
更多请参看 字符串模板
使用条件表达式
fun max(a: Int, b: Int): Int {
if (a > b)
return a
else
return b
}
把 if 当表达式:
fun max(a: Int, b: Int) = if (a > b) a else b
更多请参看 if 表达式
使用可空变量以及空值检查
当空值可能出现时应该明确指出可空。
下面的函数是当 str 不能转成 Int 值时返回空:
fun parseInt(str : String): Int?{
//...
}
使用一个返回可空值的函数:
fun main(args: Array<String>) {
if (args.size <2 ){
print("Two integers expected")
return
}
val x = parseInt(args[0])
val y = parseInt(args[1])
//直接使用 x*y 会因为它们中有空值产生错误
if (x != null && y !=null){
//x 和 y 将会在空值检测后自动转换为非空值
print(x * y)
}
}
或者这样
//...
if (x == null) {
print("Wrong number format in '${args[0]}' ")
return
}
if (y ==nulll) {
print("Wrong number format in '${args[1]}' ")
return
}
//x 和 y 将会在空值检测后自动转换为非空值
print(x * y)
更多请参看 空安全
使用值检查并自动转换
使用 is 操作符检查一个表达式是否是某个类型的实例。如果对一个不可变的局部变量属性检查是否是某种特定类型,就没有必要明确转换:
fun getStringLength(obj: Any): Int? {
if ( obj is string ){
//obj 将会在这个分支中自动转换为 String 类型
return obj.length
}
// obj 在种类检查外仍然是 Any 类型
return null
}
或者这样
fun getStringLength(obj: Any): Int? {
if ( obj is string )
return obj.length
//obj 将会在这个分支中自动转换为 String 类型
return null
}
甚至可以这样
fun getStringLength(obj: Any): Int? {
if (obj is String && obj.length > 0)
return obj.Length
return null
}
使用循环
fun main(args: Array<String>){
for (arg in args)
print(arg)
}
或者
for (i in args.indices)
print(args[i])
参看 for 循环
使用 while 循环
fun main(args: Array<Atring>){
var i = 0
while (i < args.size()){
print(args[i++])
}
}
参看 while 循环
使用 when 表达式
fun cases(obj: Any) {
when (obj) {
1 -> print("one")
"hello" -> print("Greeting")
is Long -> print("Long")
! is Long -> print("Not a string")
else -> print("Ubknow")
}
}
参看 when 表达式
使用 ranges
检查 in 操作符检查数值是否在某个范围内:
if (x in 1..y-1)
print("OK")
检查数值是否在范围外:
if (x !in 0..array.lastIndex)
print("Out")
参看 Ranges
使用集合
对一个集合进行迭代:
for (name in names)
println(name)
使用 in 操作符检查集合中是否包含某个对象
if (text in names) //将会调用 nemes.contains(text) 方法
print("Yes)
使用字面函数过滤和映射集合:
names filter { it.startsWith("A") } sortBy { it } map { it.toUperCase() }
forEach { print(it) }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论