继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Koltin一些不容易看懂的地方

qq_匡璐_0
关注TA
已关注
手记 6
粉丝 7
获赞 132

距离接触kotlin有半年多了,今年谷歌io大会让kotlin火了起来,我写的2篇手记也在半年多的昨天有了第一个回复,特地来再写一篇
kotlin随着一波浪潮被更多人的了解,学习,使用,现在能所搜到一些教程了.个人建议去看官方的文档,看一遍敲一敲在由java的基础上很容易上手,无非就是多了一些特性,现在的教程也比较详细,我就不多说了讲一讲今天的主题,一些不容易看懂,或者说一些我认为值的说的地方

  • 函数,方法的另类

    var method = { print("我是个方法")}
    //var 声明一个变量  这个变量是个函数 用{}包了起来
    method.invoke()
    //这个方法的调用,类似java反射里Method的调用,用invoke(),
    //了解java反射,可以看出来非常的类似
    //这里要说的就是 kotlin中函数也可以是一个变量
    fun method1(i:Int,m:()->Unit){
     var ii = i+1
     m.invoke()
    }
    //fun声明一个方法 这个方法需要2个参数,第一个是int类型的
    //第二个是个函数类型的,并且这个函数是无参无返回值的
    //对比一下不难理解写法 m:(s:String)->String 这个是有一个参数有返回值的
    //对比例子如下
    fun method2(i:Int,m:(s:String)->String){
     var ii = i+1
     var 返回值 = m.invoke("你好")
    }
    //调用这2个方法
    method1(0,{var 局部变量 = "我没有返回值"})
    method2(1,{s:String ->
     var 参数 = s
     "我是返回值"
    })
    //最上面讲过了{}这就是个方法的简写无参数无返回值,有参数有返回值的就是
    /*{s:String ->
     var 参数 = s
     "我是返回值"
    /*}
    //其中返回值写在最后并且省略return关键字
    //这种写法就是简单的接口回调,比较绕就多写几次
    • 空安全?

空安全并不是程序从此不抛出空指针异常了,它只是要求写代码的时候尽量的规避空异常,并且帮忙写了if(xxx==null)return这样的代码
具体的就是在声明变量的时候有2种方式,如下

var s :String = ""
var s1:String? = null
//加了 ?  的s1可以赋值为null,而不加 ? 声明的s变量如果
//赋值为null 编译不通过,必须给一个初始值表示此变量是一个不可为null变
//量. 用法如下
s.length//没什么好说的,没啥问题
s1?.length//s1可以为null,如果s1为null的话不执行次代码,不会报空指针
s1!!.length//加双叹号,表示必须执行此代码,如果是null,那就抛异常喽

这些都不是重点,重点是下面的代码,是我当年跳的一个坑,希望大家不要走我的老路

var tv:TextView? = null

刚用kotlin的时候写了一堆这样的代码,什么textview,imageview等等各种类似的情况,我都是这么声明变量的,导致代码里一堆的问号和感叹号,写的心好累,随便一个变量后面都带着问号感叹号的心情,写过的才能体会到.不想多说了

lateinit var tv:TextView
//调用
tv.text = "不要问号不要叹号,我写过findviewbyid了谢谢"
  • 最后就先写到这里吧
打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP