fun sum(a: Int, b: Int): Int {
return a + b
}
// 표현식
fun sum(a: Int, b: Int) = a + b
fun max(a: Int, b: Int) = if (a > b) a else b
val a: Int = 1
var e: String?
for (i in 1..5) {
println(i)
}
// 1 2 3 4 5
for (i in 6 downTo 0 step 2) {
println(i)
}
// 6 4 2 0
for (i in 1..5 step 3) {
println(i)
}
// 1 4
for (i in 0 until 6) {
println(i)
}
// 0 1 2 3 4 5
when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> {
print("x is neither 1 nor 2")
}
}
when (x) {
1, 2 -> print("x == 1 or x == 2")
else -> {
print("x is neither 1 nor 2")
}
}
inline fun T.apply(block: T.() -> Unit): T
val person = Person().apply {
firstName = "Fast"
lastName = "Campus"
}
Random.nextInt(100).also {
print("getRandomInt() generated value $it")
}
// 이렇게 parameter명을 지정해주면 it 대신 그 parameter명으로 접근
Random.nextInt(100).also { value ->
print("getRandomInt() generated value $value")
}
val number: Int?
// number가 null이 아닐 때만 let 함수 실행
val sumNumberStr = number?.let {
"${sum(10, it)}"
}
val person = Person()
with(person) {
work()
sleep()
println(age)
}
val result = service.run {
port = 8080
query()
}
data class JavaObject(val s: String)
// onClickListener() 불필요
button.setOnClickListener { v ->
}
코드 예시 1)
var nullableNumber: Int? = null
lateinit var lateinitNumber: Int
lateinitNumber = 10
nullableNumber?.add()
lateinitNumber.add() // 만약 초기화를 안 해주었다면 여기서 에러 발생!
코드 예시 2)
class LoginFragment : Fragment() {
private lateinit var statusTextView: TextView
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
statusTextView = view.findViewById(R.id.status_text_view)
statusTextView.setText(R.string.auth_failed)
}
}
val lazyNumber: Int by lazy {
100
}
lazyNumber.add() // 사용할 때 100이 할당
📍 lateinit과 lazy init을 사용하는 이유: 클래스 생성할 때 시간 및 메모리 절약 [참고]
1) Set: 동일한 데이터가 존재할 수 없는 컬렉션 (집합의 개념과 비슷)
- Immutable Set: setOf()
- Mutable Set: mutableSetOf()
- Hash Set: hashSetOf()
📍 setOf()와 hashSetOf()의 차이: 여기 참고
2) List: 데이터를 추가하거나 삭제를 할 때 순서를 지키는 컬렉션
- Immutable List
- Mutable List
3) Map: Key-Value 형식으로 되어있는 컬렉션
[참고]