Kotlin 学习使用之旅
Posted 烟花易冷心易碎
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin 学习使用之旅相关的知识,希望对你有一定的参考价值。
为什么从二开始呢?再此之前已经有了一篇了,那是刚知道kotlin的时候草(chao)来(chao)的并且学习一篇,
这次是自己在项目中正式使用并且遇到的一些问题记录,供kotlin新入门的童鞋参考,避免我的弯路(当然,这里的都是其他地方会有的,因为我也是在边学边记录)
难点理解:
1. !!符号 (不能为空,如果空也会抛异常)
2. ? 号 (可以为空,如果是空则返回-1)
解释如下:
//类型后面加?表示可为空
var age: String? = "23"
//抛出空指针异常
val ages = age!!.toInt()
//不做处理返回 null
val ages1 = age?.toInt()
//age为空返回-1
val ages2 = age?.toInt() ?: -1
*/
3.继承,实现
如果继承的类,那么是 :类名() 如果实现接口是 : 接口类名 即可
4.在java中构造或者方法中,参数名称,参数数量相同,但是参数类型不同即可根据参数位置的类型调用对应的构造方法,或者方法,但是在kotlin中不行,找了半天网上确实没找到,自己翻译报错,看了半天
最终搞定了,原话如下:
错误:(44, 25) None of the following functions can be called with the arguments supplied:
public constructor DefaultFragmentAdapter(fm: FragmentManager!, titleArray: ArrayList<String!>!, fragmentShow: ((positon: Int) -> Fragment!)!) defined in com.suxuantech.erpsys.ui.adapter.DefaultFragmentAdapter
public constructor DefaultFragmentAdapter(fm: FragmentManager!, titleArray: ArrayList<String!>!, fragmentShow: DefaultFragmentAdapter.FragmentShow!) defined in com.suxuantech.erpsys.ui.adapter.DefaultFragmentAdapter
public constructor DefaultFragmentAdapter(fm: FragmentManager!, mCount: Int, fragmentShow: ((positon: Int) -> Fragment!)!) defined in com.suxuantech.erpsys.ui.adapter.DefaultFragmentAdapter
public constructor DefaultFragmentAdapter(fm: FragmentManager!, mCount: Int, fragmentShow: DefaultFragmentAdapter.FragmentShow!) defined in com.suxuantech.erpsys.ui.adapter.DefaultFragmentAdapter
翻译:在提供的参数中不能调用下列函数:
这里主要是因为Kotlin语言问题,因为kotlin不算强类型,也算不上弱类型,他会自己推断传入的对应的强类型,因为你传入的var类型不明确,所以你需要使用你想用的哪个方法对应的类型进行转换即可, 或者 as 当然as 必须是有继承类型的,不同类型的,会转换失败
5.匿名接口实现:
viewPager!!.addOnPageChangeListener(object : OnPageChangeListener{
override fun onPageScrollStateChanged(state: Int) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun onPageSelected(position: Int) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
})
6. 关于重写:重写之后默认会有todo ,java没问题,但是kolin 要求你一定要写一些东西,如果不写你可以把todo删除即可
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
7.拉姆达:挺坑爹的
接口只有一个方法且参数只有一个的:
以上是关于Kotlin 学习使用之旅的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin学习之旅解决错误:kotlin.NotImplementedError: An operation is not implemented: Not yet implemented
我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段
我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段