/
KotlinTip10.kt
88 lines (72 loc) · 1.59 KB
/
KotlinTip10.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package com.sw.kotlin.tip10
import android.content.Context
import android.widget.TextView
fun testL(context: Context) {
val textView = TextView(context)
/*
* 传统形势
* */
textView.setOnClickListener(object : android.view.View.OnClickListener {
override fun onClick(v: android.view.View?) {
//handle click
}
})
/*
* lambda的形势
* */
textView.setOnClickListener({ v ->
{
//handle click
}
})
/*
* lambda的参数如果没有使用可以省略,省略的时候用it来替代
* */
textView.setOnClickListener({
//handle click
})
/*
* lambda在参数的最后一个的情况可以将之提出去
* */
textView.setOnClickListener() {
//handle click
}
/*
* lambda提出去之后,函数如果没有其他参数括号可以省略
* */
textView.setOnClickListener {
//handle click
}
}
interface OnClickListener {
fun onClick()
}
class View {
var listener: OnClickListener? = null;
/*
* 传统方式的
* */
fun setOnClickListener(listener: OnClickListener) {
this.listener = listener
}
fun doSth() {
//some case:
listener?.onClick()
}
/*
* 声明lambda形势
* */
fun setOnClickListener(listener: () -> Unit) {
}
}
fun testL2() {
val view = View()
view.setOnClickListener(object : OnClickListener {
override fun onClick() {
//handle click
}
})
view.setOnClickListener {
//handle click
}
}