Kotlin的一些問題

2021-08-11 11:46:40 字數 1182 閱讀 2362

一、關於匿名函式的一些問題

1:

inline fun string.testlambda(action:string.()->unit)= action

()2:

inline

funstring.testlambda2

(action:context.()->unit)=action

()3:

inline

funstring.testlambda3

(action:()->unit)=action

()

針對string,擴充套件了三個函式,其中1,3可以通過,2無法通過。方法2需要傳入乙個content才能通過,如下

inline fun string.testlambda2(context: context,action:context.()->unit)=action(context)
對三個方法執行測試

"aaa"

.testlambda }

"aaa"

.testlambda2(this) }

"aaa"

.testlambda3 }

輸出 aaa

com.xly

.kotlinupdate

.mainactivity

@3d1bc137

com.xly

.kotlinupdate

.mainactivity

@3d1bc137

結論:

1、***.()這個匿名函式需要在呼叫匿名函式時傳入乙個***物件

2、當擴充套件型別,和***一致的時候,可以直接省略

3、普通匿名函式相當於沒有型別傳入,所以不用傳任何引數。

4、通過資料輸出,可以看出在函式呼叫的時候可以通過this直接得到持有的***物件。

總結:這種方式,在anko的dsl中自定義view中有體現。

inline fun viewmanager.customizeview(theme: int = 0, init: customizeview.() -> unit) = ankoview

(, theme, init)

String 一些問題

前言 等號 對於基本型別,比較的是值,對於引用型別,比較的是記憶體位址。1.在物件池中建立,如果常量池中已經存在則返回常量池中已經有的。private static void test1 結果 true 2.乙個在string pool中,乙個在堆中。private static void test...

C 一些問題

1 if else語句和switch case語句的效率分析對比 switch效率高。switch的效率與分支數無關,當只有分支比較少的時候,if效率比switch高,因為switch有跳轉表。分支比較多,那當然是switch 根據大量的實際程式測試 不考慮不同的編譯器優化程度差異,假設都是最好的優...

mysql 一些問題

1 中文亂碼 問題 推薦用 uft 8 編碼 適配一切介面,mysql中 發生中文亂碼時 開啟mysql 安裝路徑 更改後 重啟mysql 服務即可,有時也需要 重新匯入資料庫 可能是與 source 檔案時 編碼沒有設定好 client password your password port 33...