为了账号安全,请及时绑定邮箱和手机立即绑定

Koltin一些不容易看懂的地方

标签:
Android

距离接触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了谢谢"
  • 最后就先写到这里吧
点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消