반응형
1. let
val num: Int = (a*b - 2*a)
testFunction(num)
(a*b - 2*a).let{
testFunction(it)
val padding = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16f, resources.displayMetrics).toInt()
// 왼쪽, 오른쪽 padding 설정
setPadding(padding, 0, padding, 0)
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16f, resources.displayMetrics).toInt().let { padding ->
// 계산된 값을 padding 이라는 이름의 인자로 받음
setPadding(padding, 0, padding, 0)
}
아래는 모두 let을 활용하여 고친 형태
// null일 수 있는 변수 obj
var obj: String?
// ...작업 수행...
// obj가 null이 아닐 경우 작업 수행 (기존 방식)
if (null != obj) {
Toast.makeText(applicationContext, obj, Toast.LENGTH_LONG).show()
}
// obj가 null이 아닐 경우 작업 수행 (Safe calls + let 사용)
obj?.let {
Toast.makeText(applicationContext, it, Toast.LENGTH_LONG).show()
}
Safe Call 한거.
매개변수가 하나일 경우, 람다식 안쓰고 it으로 대체 가능.
2. run
// 웹뷰의 인스턴스를 가져온다
val settings = main_webview.settings
settings?.run{
// 자바스크립트 사용가능 유무
javaScriptEnabled = true
// cache유무
setAppCacheEnabled(true)
cacheMode = WebSettings.LOAD_DEFAULT
setAppCachePath(cacheDir.path)
// zoom
setSupportZoom(true)
builtInZoomControls = true
displayZoomControls = true
// ...
}
main_webview.settings.run{
// 자바스크립트 사용가능 유무
javaScriptEnabled = true
// cache유무
setAppCacheEnabled(true)
cacheMode = WebSettings.LOAD_DEFAULT
setAppCachePath(cacheDir.path)
3. apply
val param = LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT)
param.gravity = Gravity.CENTER_HORIZONTAL
param.weight = 1f
param.topMargin = 100
param.bottomMargin = 100
val param = LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT).apply {
gravity = Gravity.CENTER_HORIZONTAL
weight = 1f
topMargin = 100
bottomMargin = 100
}
참고: https://www.androidhuman.com/lecture/kotlin/2016/07/06/kotlin_let_apply_run_with/
반응형
'Android > Kotlin' 카테고리의 다른 글
const val과 그냥 val의 차이 (0) | 2019.01.22 |
---|---|
lateinit & by lazy (0) | 2018.12.11 |
클로저(Closure) (0) | 2018.12.09 |
고차 함수(Higher-order Function) (0) | 2018.12.09 |
람다식(Lambda Expression) & 익명함수(Anonymous Function) (0) | 2018.12.09 |