Kotlin 學習記錄

1, Singleton的寫法

Kotlin寫法

object TestFile {
    fun sum(a: Int, b: Int): Int {
        return a * b
    }
}

在kotlin 中通過object關鍵字定義單例類

JAVA中調用方法如下

<span style="font-size:14px;">int result = TestFile.INSTANCE.sum(6, 2);
Toast.makeText(MainActivity.this, result + " is the result", Toast.LENGTH_SHORT).show();

注意事項:
* java 中無需使用new TestFile()來調用,kotlin中自動處理了private構造方法, java中調用會提示類似private accessible constructor一類的錯誤, new調用的話,需要類型爲class, 不能是object
* 定義object關鍵字後,默認類型就是public, 無需再定義public訪問類型,輸出Int和String類型</span>
<span style="font-size:14px;">
//這樣寫法會提示編譯錯誤
println(a * b + " result")
//這樣寫可以輸出成功
println("" + a * b + " result")
//或者這樣也可以輸出成功
println((a * b).toString() + " result")</span>






3, TODO() - 拋異常

fun start(): String = TODO("fdsafdsaf")

會拋出以下異常錯誤信息

Exception in thread "main" java.lang.Exception: fdsafdsaf

    at KotlinUtilKt.TODO(kotlinUtil.kt:1)

    at TaskKt.start(Task.kt:1)

    at TestStart.testOk(Test.kt:6)



4, 類型轉換

強制類型轉換可以用以下方法

<span style="white-space:pre">	</span>var iterator = collection.iterator() as Iterator<Int>
</pre><pre code_snippet_id="1579101" snippet_file_name="blog_20160215_23_9388123" name="code" class="java"><span style="white-space:pre">	</span>//或者
<span style="white-space:pre"></span><pre name="code" class="java"><span style="white-space:pre">	</span>var iterator: Iterator<Int> = collection.iterator()


5, joinToString() - 簡單處理字符串拼接方法

看joinToString的源代碼如下,已經默認自定義好分隔符,前綴,後綴等屬性,可以直接拿來修改使用

fun <T> Array<out T>.joinToString(

    separator: CharSequence = ", ", 

    prefix: CharSequence = "", 

    postfix: CharSequence = "", 

    limit: Int = -1, 

    truncated: CharSequence = "...", 

    transform: (T) -> CharSequence = null

): String (source)


例如,需要輸入a b c d e ,返回[a-b-c-d-e], 只需要如下代碼:


<span style="font-size:14px;">    fun joinStrings(strs: Array<String>): String {
        return strs.joinToString(prefix = "[", postfix = "]",separator = "-")
    }</span>


6, 方法返回類型

方法返回類型可以自動判定, fun() = 這種寫法可以自動判定返回類型,下邊例子可以動態判定是返回Int 還是 String

fun testType(obj : Any) = if (obj is Int) (obj.toString() + " Integer") else " others" 


7, 方法參數

如果方法有多個參數,並且賦值默認參數值,在調用方法時可以只寫入需要變化的參數值,例如

<span style="font-size:14px;">    fun testParams(a: Int = 4, b: Int = 5, c: Int = 6) = a + b + c

    fun testParams2() = testParams(b = 10)</span>
在調用testParams2()時,得到的結果是20, a, c都採用默認值,b被重新賦值爲10


8, Raw Strings

定義字符串的方法,有一種叫做raw string, 例如下:

fun getString(str: String):String{

   return 

    """

  price:  ${'$'}999

  name: ${str}

    """

}

當輸出調用getString("aaaa")時,結果是:

      price: $999
      name: aaaa

而且支持換行,很方便


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章