1. 程式人生 > >Kotlin 學習使用之旅(二)

Kotlin 學習使用之旅(二)

erp alt sys arguments 實現 ngs settings override blog

為什麽從二開始呢?再此之前已經有了一篇了,那是剛知道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 學習使用之旅(二)