2018年9月10日 星期一

[Kotlin] 筆記

其用法和java相似,一樣有package、import,比較特別的地方是宣告的方式與資料型態還有function定義模式改變。

定義變數需下關鍵字var,若一開始不賦值須加上特殊的關鍵字lateinit進行宣告,並且它是採用名字在前面,型態在後面的方式去定義變數。而function的部分關鍵字簡短為fun,回傳的型態放置於括號後方。在Android的應用上listener的宣告方式變得更簡短。


import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.TextView

class MainActivity : AppCompatActivity() {
    lateinit var btn_1:Button
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val txt: TextView = findViewById(R.id.txt_1);
        txt.setText(fun1())
     
        btn_1 = findViewById(R.id.btn_1)
        btn_1.setOnClickListener{
            fun2()
        }
    }

    fun fun1():String{
        return "ya"
    }

    fun fun2(){
        btn_1.setText("click!!!!!!");
    }
}



1、宣告關鍵字
var 之後可以變動
val 初始化後只能讀取 (Val cannot be reassigned)

2、字串中取用變數
println("oooxxx${string}")

3、
val只有getter
var有getter 及 setter

getter與setter的改寫 : 使用關鍵字field
class Say{
  var msg:String = "hello"
    get() = field
    set(val){
      field = val
    }
}

Say say = new Say()
println(say.msg) // world
say.msg = "hi"
println(say.msg) // hi





沒有留言:

張貼留言