请问Kotlin语言中,以下代码是什么定义方法?
a(fun b(param: Int): String {
return param.toString()
});
看起来格式就是 a(参数); ,没有加函数体也没有加等于号,初学不是看的很懂,搜索引擎没找到这是什么用法,麻烦解释以下,非常感谢!
请问Kotlin语言中,以下代码是什么定义方法?
a(fun b(param: Int): String {
return param.toString()
});
看起来格式就是 a(参数); ,没有加函数体也没有加等于号,初学不是看的很懂,搜索引擎没找到这是什么用法,麻烦解释以下,非常感谢!
【相关推荐】
Kotlin中使用接近于Java的方式(内置类型)来表示数字,但是又不完全相同,
Kotlin是静态类型语言,意味着所有变量和表达式类型在编译时已确定。
在Kotlin中所有变量的成员方法和属性都是对象。数字相关的内置类型如下:
(PS:都是继承Number类)
需要注意几点:
- 1.没有自动向上转型,比如Int转Long,需要自己调toXxx方法转,比如:
val a: Int = 1024 val b:Long = a.toLong()- 2.Long类型结尾必须为大写的L,不能为小写,比如1024L
- 3.Kotlin中的字符Char不是基本数据类型(不继承Number),用单引号来声明,
比如’c’,不能像Java一样直接拿来当数字使,如果你想把Char的值给Int,需要调toInt()方法- 4.Boolean的值为true或false
- 5.Kotlin不支持8进制,十六进制0x开头,二进制0b开头
- 6.位运算符,Java中的与或运算符用:|和&,kotlin中使用or和and关键字来替代
其他运算符也有分别的关键字替代:shl(有符号左移),shr(有符号右移),ushr(无符号右移)
,xor(按位异或),inv(按位取反)- 7.(1.1版本新增)支持下划线使数字常量更易读,比如:val oneMillion = 1_000_000
Kotlin中使用 val 关键字来声明一个只读常量(final,定义后,如果去修改变值是会报错),
而使用 var 关键字来声明一个变量!
普通的写法示例(显式指定)
和Java里那种int b = 123;很类似,而Kotlin里有类型推断(Type inference)这种东西,
你甚至可以不指定数据类型,让它自动从后面的语句中推断出来对应的类型!比如你可以写成:
然后问题来了,初始化的问题,比如Android中我们初始化控件会先写一个变量然后初始化为null,
而在Kotlin如果你直接这样写是会报错的:
不能为空值?是的,这涉及到Kotlin中引以为傲的NULL安全,后面会细说,这里告诉你加个
问号就可以了:
为什么你学到后面就知道了,当然这里肯定还有另外一种解决的套路。对了,有人喜欢把这种
先定义,用到的时候再去初始化的套路叫做:延时加载,而kotlin中对此也提供了一个操
作符:lateinit,用法也很简单:
Kotlin中和Java是有些许不同的:
- public:默认,总是可见
- internal:同模块可见,起保护作用,防止模块外被调用
- private:仅在同一个文件中可见
- protected:类似于private,但对子类也可见
既然说到作用域,相信你会对常量和变量的作用域感兴趣,我们把kotlin文件转成Java文件
就一清二楚了:
从图中不难得出这样的结论:
默认作用域private,val修饰常量为final会生成get方法,而var修饰变量则会自动生成get和set方法。