收集老是忘的 kotlin 代碼片段

Linux編程

點擊右側關注,免費入門到精通!

作者丨前行的烏龜https://www.jianshu.com/p/bad802d5ad76

ps : 整理中 … 不要罵我啊

1. 解析 view 自定義屬性

這里的核心是 kotlin 對 list 的寫法和 Sequence 序列的應用,Sequence 序列會大大提升 list 處理速度,rxjava 式的調用感官是很 Nice 的。

privatefuninitAttrs(context:Context,attributeSet:AttributeSet?,defAttrStyle:Int){valtypedArray=context.obtainStyledAttributes(attributeSet,R.styleable.CustomeTextView)(0..typedArray.indexCount).asSequence().map{typedArray.getIndex(it)}.forEach{when(it){//獲取文字內容R.styleable.CustomeTextView_android_text->{mText=typedArray.getString(R.styleable.CustomeTextView_android_text)}//獲取文字大小R.styleable.CustomeTextView_android_textSize->{vartextSize=typedArray.getDimensionPixelSize(R.styleable.CustomeTextView_android_textSize,0).toFloat()mPaint.textSize=textSize}}}typedArray.recycle()}

2. 自定義 view 構造函數

@JvmOverloadsconstructor(context:Context,attributeSet:AttributeSet?=null,defAttrStyle:Int=0):super(context,attributeSet,defAttrStyle){//初始化畫筆initPaint()//初始化默認圖片資源initDrawable()//初始化各種自定義參數initAttrs(context,attributeSet,defAttrStyle)cauculateStartState()}

3. 用對象函數代替接口

kotlin 的把函數作為一個對象來使用,這樣極大的擴展了代碼了靈活度,很多時候減少了我們不少代碼量,但是也增加了學習難度。這里我們來用一個對象函數來替代一個 lisenter 接口

1.類內部聲明一個對象函數,並使用

openclassBook(varname:String):Cat(),Foo{//沒有返回值用UnitlateinitvargetData:(name:String,age:Int)->StringfunString.aact(str:String):String{returnname.aact(name)}

2.外部類做到這個對象函數

classMainActivity<T:String>:AppCompatActivity(){//方法一:傳遞一個聲明相同的方法,類似於做到接口方法book1.getData=this@MainActivity::getDatafungetData(name:String,age:Int):String{return"5555"}//方法二:做到匿名方法,先把參數再聲明一下,後面具體做到邏輯即可book1.getData={name:String,age:Int->text_name.toString()}}

4. 坑爹的 lateinit

lateinit 本身的含義是延遲初始化,但是在編譯時必須保證 lateinit 修飾的參數被初始化,否則編譯不過去的

今天就碰到了這個問題,我有個對象函數外接可能不會賦值的,我用的 lateinit 修飾的這個對象函數,結果死活編譯不過去,蛋疼死了

最後發現只能這麼寫:

//聲明時用?.nullvarmCallBack:MyWebViewCallBack?=null//使用時?.!!才行if(mCallBack!=null){result=mCallBack?.shouldOverrideUrlLoading(view,url)!!returnresult}

kotlin 的 null 操作

valname:String?//這里要吐槽下為什麼kotlin沒有三目運算符?name=if(Random.nextBoolean())"Ann"elsenull//加上?則只在name不為null的時候會調用,得到的len1類型也是有問號的,即Int?vallen1=name?.length//這種寫法是如果為空給一個默認值,得到的len2類型為Int,不帶問號vallen2=name?.length?:0//加上雙感嘆號其實就是java什麼都不加的寫法了,如果為null會報空指針異常vallen3=name!!.length

函數式編程

funAppCompatActivity.setupActionBar(@IdRestoolbarId:Int,action:ActionBar.()->Unit){valtoolbar=findViewById<Toolbar>(toolbarId)setSupportActionBar(toolbar)supportActionBar?.run{//執行參數中的函數,這樣用戶在調用該方法的時候更加靈活action()}toolbar.setNavigationOnClickListener{Log.d("AppCompatActivity","finish")finish()}}//------------------------分割線-----------------------------//類似的單方法接口現在只需要寫一個閉包就行了binding.aliPayIcon.setOnClickListener{Log.d("example",it.contentDescription.toString())}//擴展函數let,只有在對象不為空的時候會調用,相當於做了判空binding.let{it.setLifecycleOwner(this@WithdrawActivity)it.viewModel=vm}//擴展函數apply,在閉包內可直接調用對象的方法屬性,有個好處就是可以直接操作對象不需要先生成變量vm.accountName.apply{this.value="aaaa"Log.d("example",this.value?.toString()+":"+this.hashCode())}//還有其他基礎擴展函數run,with,also等等,可以看看這篇博客的介紹:https://www.jianshu.com/p/28ce69d58fea

推薦↓↓↓

?16個技術公眾號】都在這里!

涵蓋:工程師大咖、源碼共讀、工程師共讀、數據結構與算法、黑客技術和網路安全、大數據科技、編程前端、Java、Python、Web編程開發、Android、iOS開發、Linux、數據庫研發、幽默工程師等。

萬水千山總是情,點個 「好看」 行不行

分享到Facebook

 


不知道如何找適合的對象?歡迎加官方LINE → Line ID:@shesay
戀愛小秘書免費一對一諮詢!
✔追蹤我的YouTube:https://www.youtube.com/@datenami
✔追蹤我的TikTok:https://www.tiktok.com/@datnami

 

配對成功的關鍵:參加實體交友活動

erose主題派對與戀愛小秘書創辦人娜米表示:「透過各種有趣的實體活動,不僅能親眼真實見到異性,也能在活動進行中讓大家很輕鬆自然的認識彼此、聊天互動,能更快速的找到適合的對象。」

結合大數據用心篩選 + 客製化條件配對

戀愛小秘書團隊已經成功替4000位以上的未婚男女配對成功,這個驚人成果背後的秘密在於「高度客製化服務」,跟每位客戶深度訪談,瞭解客戶真正的特質及需求,從「契合度」提高速配率。

訪談結果結合專屬的人格分析測驗與數據配對分析,精緻化的操作,締造高速配率!

除此之外,戀愛小秘書團隊還會定期追蹤客戶的後續狀況,目的是希望協助客戶發展長期且穩定的伴侶關係。

實名認證防造假!隱私保護最安心!

採用「實名認證」的制度,不僅是把關顧客的身份,避免已婚人士或動機不單純者的加入,更對客戶資料嚴格保密,讓客戶們能在安全且有隱私的狀況下認識另一半。

多元有趣的主題活動,豐富你的社交生活

戀愛小秘書團隊每個月都會規劃豐富多元的實體活動,從戶外踏青、娛樂遊戲、手作、料理課程到桌遊活動,希望客戶們能從歡樂的氣氛中認識彼此。

透過實體活動讓大家先有初步的接觸,然後再為會員們做「客製化」的約會安排。

另外針對想提升自身魅力的客戶,也有投資理財、形象穿搭等講座可供選擇。

追求脫單,先勇敢跨出你的第一步

許多單身者為了心中理想的對象條件,在還沒認識新朋友時,就先限制了自己。建議以認識新朋友的心態,積極參與活動,並適當的設限,才能真正為自己帶來戀愛的機會!勇敢跨出第一步吧!

♡ 現在就和戀愛小秘書娜米聊聊吧Line ID:@shesay

♡ 追蹤娜米的臉書粉絲團

她來報好康

 

SheSay 專注在 兩性、愛情等領域
建立專屬女生觀點的品牌形象
堅持「在第一時間掌握男女的時事議題」
將時下最流行的話題網羅、呈現。

馬上測算你的戀愛密碼

戀愛小秘書-娜米

單身很久?一直被分手?
從生日就看出你的戀愛疑難雜症!
娜米的戀愛數字密碼來幫你了。