함수의 선언 |
함수를 선언하려면 fun 키워드 뒤에 함수 이름이 오도록 사용합니다.
fun generateAnswerString() { }
함수의 인수 입력 |
함수를 선언하려면 fun 키워드 뒤에 함수 이름이 오도록 사용합니다.
fun generateAnswerString(countThreshold: Int) { }
함수의 값 반환 |
fun generateAnswerString(): String {
return "I have the answer."
}
함수의 호출 |
val answerString = generateAnswerString()
함수의 단순화 |
fun generateAnswerString(countThreshold: Int): String {
val answerString = if (count > countThreshold) {
"I have the answer."
} else {
"The answer eludes me."
}
return answerString
}
변수 초기화도 귀찮으면 return값에 바로 넣기..
fun generateAnswerString(countThreshold: Int): String {
return if (count > countThreshold) {
"I have the answer."
} else {
"The answer eludes me."
}
}
리턴도 거슬리면 이것도 생략...
fun generateAnswerString(countThreshold: Int): String = if (count > countThreshold) {
"I have the answer"
} else {
"The answer eludes me"
}
if도 거슬린다... when사용..
fun generateAnswerString(countThreshold: Int): String = when {
count > countThreshold -> "I have the answer."
else -> "The answer eludes me."
}
변수 이름 짓기도 귀찮은 사람을 위해 익명함수를 사용!
val stringLengthFunc: (Int) -> String = {input -> when
{
count > input -> "I have the answer."
else -> "The answer eludes me."
}
}
고차 함수 |
함수를 인수로 받을 수 있습니다.
함수를 정의하고 사용하는 예 입니다.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
stringMapper("Android", { input ->
input.length
})
}
fun stringMapper(str: String, mapper: (String) -> Int): Int {
// Invoke function
return mapper(str)
}
이렇게 익명의 함수가 마지막 매개변수인 경우 ')' 밖에서 호출할 수 있습니다.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
stringMapper("Android") { input ->
input.length
}
}
fun stringMapper(str: String, mapper: (String) -> Int): Int {
// Invoke function
return mapper(str)
}
반응형