매개변수로 전달된 인자를 가지고 항상 동일한 결과를 반환하는 함수
순수함수의 조건
부수효과
함수가 실행되는 과정에서 함수 외부의 데이터를 사용 및 수정하거나 외부의 다른 기능을 사용하는 것
fun purefunc(a: Int, b:Int) : Int {
return a+b
}
fun nonpure1(a: String) {
println("비순수함수 $a") // 외부에 출력
}
var state = 100
fun nonpure2(x : Int) : Int { // 전역변수 값 변
state += x
return state
}
fun main(args: Array<String>) {
println(purefunc(10, 20)) // 함수를 계속 호출해도 결과는 같음
println(purefunc(10, 20))
nonpure1("외부 출력")
println(state)
println(nonpure2(108))
println(state)
println(nonpure2(108))
println(state)
}
30 30 비순수함수 외부 출력 100 208 208 316 316
일급 객체 함수