μλ νμΈμ μ€λμ Kotlinμμ μ 곡νλ μ¬λ¬ κ°μ§ ν¨μλ€μ λν΄μ 곡λΆν κ²μ μ 리ν΄λ³΄λ € ν©λλ€.
Kotlinμμλ Javaμ λ€λ₯΄κ² funμ΄λΌλ ν€μλλ‘ ν¨μλ₯Ό μ μν©λλ€. : λ€μλ λ°ν νμ μ μ€μ ν©λλ€. Unitμ μλ°μμ μ¬μ©λλ voidμ λμΌν©λλ€. μμλ μλμ κ°μ΅λλ€.
fun testFunction(param1 : String , param2: String) : Stirng {
//todo something
}
fun testUnitFunction() : Unit {
//todo something μ Unitμ μλ΅ κ°λ₯νλ€.
}
μ΄μ Kotlinμμ μ 곡νλ μ¬λ¬κ°μ§ ν¨μλ€μ λν΄ μμλ΄ μλ€.

βͺοΈ Default μ§μ ν¨μ & λ³μ μ§μ ν¨μ
ν¨μλ₯Ό μμ±ν λ νλΌλ―Έν° κ°μ κΈ°λ³Έμ μΌλ‘ μ§μ νμ¬ μ¬μ©ν μ μμΌλ©°. κ°μ μ§μ νμ§ μμ κ²½μ° μ μΈν κΈ°λ³Έκ°μ μ¬μ©νκ² λ©λλ€.
import java.text.DecimalFormat
import java.util.*
val decimalFormat = DecimalFormat("###,###,###,###")
val currency : String? = Currency.getInstance(Locale.getDefault()).symbol
val currentMonth = Calendar.getInstance().get(Calendar.MONTH) + 1
const val MONTH_OF_YEAR = 12
fun paycheck(annualSalary : Long = 50_000_000 , tax : Float = 0.333f) : Long{
var salary = annualSalary / MONTH_OF_YEAR
salary -= (salary * tax).toLong()
return salary
}
fun main() {
var salary = paycheck(36_000_000) // 첫λ²μ§Έ μΈμκ° μ μ©
println("${currentMonth}μ μ΄ κΈμ¬λ $currency${decimalFormat.format(salary)}μ
λλ€.")
salary = paycheck() // κΈ°λ³Έ μΈμκ°μ μ μ©
println("${currentMonth}μ μ΄ κΈμ¬λ $currency${decimalFormat.format(salary)}μ
λλ€.")
salary = paycheck(90_000_000 , 0.025f) // λλ²μ§Έ μΈμκ° κΉμ§ μ μ©
println("${currentMonth}μ μ΄ κΈμ¬λ $currency${decimalFormat.format(salary)}μ
λλ€.")
salary = paycheck(tax = 0.045f) // νλΌλ―Έν°κ°μ λͺ
μμ μΌλ‘ μ§μ ν¨μΌλ‘ λλ²μ§Έ μΈμκ°μ λ³κ²½ ν μ μλ€.
println("${currentMonth}μ μ΄ κΈμ¬λ $currency${decimalFormat.format(salary)}μ
λλ€.")
}
βͺοΈ μ§μ ν¨μ(Local Function)
ν¨μ λ΄λΆμ ν΄λΉ ν¨μμμλ§ μ¬μ©νλ μ§μ ν¨μλ₯Ό μμ±ν μ μμ΅λλ€. μμ μ½λλ μλμ κ°μ΅λλ€.
const val MANAGER = "Manager"
const val STAFF = "Staff"
const val INTERN = "Intern"
fun paycheck(annualSalary : Long , position : String) : Long{
var tax = 0.0f
fun applyTax(){ // LocalFunction μΌλ‘ ν¨μ λ΄λΆμμ ν¨μλ₯Ό μλ‘ μ μκ° κ°λ₯νλ€ λ€λ§, μμ£Ό μ¬μ©νμ§λ μμ
tax = if(annualSalary > 0 ) when (position){
MANAGER -> 0.027f
STAFF -> 0.033f
else -> 0.047f
} else {
throw IllegalAccessException("$annualSalary κ°μΌλ‘ μ°λ΄μ κ³μ° ν μ μμ΅λλ€.")
}
}
applyTax()
var salary = annualSalary/12
salary -= (salary*tax).toLong()
return salary
}
fun main() {
var salary = paycheck(36_000_000 , STAFF)
println("${currentMonth}μ μ΄ κΈμ¬λ $currency${decimalFormat.format(salary)}μ
λλ€.")
}
βͺοΈ μ€μ ν¨μ(infix Function)
ν΄λμ€μ λ©€λ² νΈμΆ μ μ¬μ©λλ (.)κ³Ό ν¨μ μ΄λ¦ λ€μ μκ΄νΈλ₯Ό μλ΅ν΄ μ§κ΄μ μΈ μ΄λ¦μ μ¬μ©νμ¬ νννλ λ°©λ²μΌλ‘ μ€μ ν¨μκ° λκΈ° μν΄μλ 3κ°μ§ μ‘°κ±΄μ΄ μμ΅λλ€.
1. λ©€λ² λ©μλ λλ νμ₯ ν¨μμ¬μΌ νλ€.
2. νλμ λ§€κ°λ³μλ₯Ό κ°μ ΈμΌ νλ€.
3. infixν€μλλ₯Ό μ¬μ©ν΄μΌ νλ€
import java.util.Scanner
fun main() {
val num = 5
println("μ«μλ₯Ό μ
λ ₯ν΄μ£ΌμΈμ.")
val num2 = Scanner(System.`in`).nextInt()
println(num multiply num2)
}
infix fun Int.multiply(num : Int) : Int {
return this * num
}
βͺοΈ νμ₯ ν¨μ(Extension Function)
ν΄λμ€λ₯Ό μμλ°μ§ μκ³ κΈ°λ³Έ ν΄λμ€μ ν¨μλ₯Ό μΆκ° ꡬννλ ν¨μλ‘ μλ μμ μμλ νμ€ λΌμ΄λΈλ¬λ¦¬ classμ μμλ‘ μμ±ν classλ₯Ό λ λ€ νμ₯ ν¨μλ₯Ό μ¬μ©ν΄ μλ‘μ΄ ν¨μλ₯Ό ꡬνν΄λ³΄μμ΅λλ€.
[ TextClass.kt ]
//Testλ₯Ό μν κ°μ ν¨ν€μ§μ class μμ±ν¨
package com.lee.extensionfunction
class TestClass {
fun isResult(grade : Int) : Boolean {
return grade >= 60
}
}
[EntryPoint]
package com.lee.extensionfunction
fun main() {
val testClass = TestClass()
val score = 95
if(testClass.isResult(score)){
if(testClass.isExcellent(score)){
println("λΉμ μ μμ΄μ€κ΅°μ!!")
}
else {
println("μνμ ν΅κ³Όνμ
¨μ΅λλ€.")
}
} else {
println("μνμμ λ¨μ΄μ§μ
¨μ΅λλ€.")
}
/**
μλλ μ κ· class Extension Function
**/
var list = arrayListOf(23, 22, 3)
println("swap μ list = $list")
list = list.swap(0,2)
println("swap ν list = $list")
val result = "@$@$#@$%#$^%#@$%@# Kotlin %^#$%#$ World!@#!@#!@#!@#!@#".removeSpecialCharacters()
println(result)
}
fun TestClass.isExcellent(grade : Int) : Boolean {
//TextClassμ μλ‘μ΄ νμ₯ν¨μ
return grade >= 95
}
fun ArrayList<Int>.swap(item1 : Int , item2: Int) : ArrayList<Int> {
//ArrayList μ νμ₯ ν¨μ
val temp = this[item1]
this[item1] = this[item2]
this[item2] = temp
return this
}
fun String.removeSpecialCharacters() : String { //μ κ·λ¬Έμκ° μλ λ¬Έμλ μ λΆ κ³΅λ°±μΌλ‘ λ체
//Stringμ νμ₯ ν¨μ
val match = """[^A-Za-z0-9]""".toRegex()
return replace(match , "")
}
μΈμλ inline ν¨μ , 꼬리 μ¬κ· ν¨μ λ±μ΄ μμ§λ§.. μμ§ μ’ λ 곡λΆκ° νμν κ² κ°μ΅λλ€..

μ΄μμΌλ‘ Kotlinμ Functionμ λνμ¬ μμ보μμ΅λλ€. π
'Tutorial > tutorial' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Kotlin] μ½νλ¦° μ¬λ¬κ°μ§ Collectionμ λνμ¬ (0) | 2022.09.29 |
---|---|
[Kotlin] μ½νλ¦° Property μμ (0) | 2022.09.27 |
[Kotlin] Kotlin Property λ·λ°μΉ¨ νλ(Backing Field)μ μ¬μ©λ² (2) | 2022.09.21 |
[Kotlin] Random ν¨μλ₯Ό μ΄μ©νμ¬ λ‘λ λ²νΈ μΆλ ₯νκΈ° (0) | 2022.09.16 |
[Kotlin] Array , List , ArrayListμ κΈ°λ³Έ μ¬μ©λ² (0) | 2022.02.24 |