一、關於匿名函式的一些問題
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、***.()這個匿名函式需要在呼叫匿名函式時傳入乙個***物件總結:這種方式,在anko的dsl中自定義view中有體現。2、當擴充套件型別,和***一致的時候,可以直接省略
3、普通匿名函式相當於沒有型別傳入,所以不用傳任何引數。
4、通過資料輸出,可以看出在函式呼叫的時候可以通過this直接得到持有的***物件。
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...