순수 함수
- 순수 함수 이해
- 동일한 입력 인자에 대해서는 항상 같은 결과를 출력 혹은 반환한다.
- 값이 예측이 가능해 결정적(deterministic)이다.
- 동일한 입력 인자에 대해서는 항상 같은 결과를 출력 혹은 반환한다.
//순수 함수의 예
fun sum(a: Int, b: Int): Int {
return a + b // 동일한 인자인 a, b를 입력받아 항상 a+b를 출력
}
동일한 인자를 받아 100만번을 수행해도 같은 값이 나온다.
- 순수 함수의 조건
- 같은 인자에 대하여 항상 같은 값을 반환
- 함수 외부의 어떤 상태도 바꾸지 않는다. (바꾸지 말아야한다)
(위에서 한 말이랑 같은말임)
- 함수 외부의 어떤 상태도 바꾸지 않는다. (바꾸지 말아야한다)
- 같은 인자에 대하여 항상 같은 값을 반환
// 순수함수가 아닌 예
fun check() {
val test = User.grade() // check() 함수에 없는 외부의 User 객체를 사용했음
if (test != null) process(test) // 변수test는 User.grade의 실행결과에 따라 달라지게 됨
}
//또는
const val global = 10
fun main() {
val num = 10
val num2 = 3
val result = noPureFunction(num1, num2)
println(result)
}
fun noPureFunction(a: Int, b: Int): Int {
return a + b + global // noPureFunction에 입력값이 있더라도 외부의 변수 (global을 사용했기 때문에
//순수 함수가 아니게 됨)
}
- 순수 함수를 왜 사용하는가?
- 입력과 내용을 분리하고 모듈화 하므로 재사용성이 높아진다.
(여러가지를 조합해도 같은 값이 나오기 때문에 부작용이 없다)- 특정 상태에 영향을 주지 않으므로 병행 작업시 안전하다.
- 함수의 값을 추적하고 예측 할 수 있기 때문에 테스트, 디버깅 등이 유리하다.
(대충 1번과 같은말)
- 입력과 내용을 분리하고 모듈화 하므로 재사용성이 높아진다.
'Kotlin' 카테고리의 다른 글
내일배움캠프 12.08 TIL (2) | 2023.12.22 |
---|---|
내일배움캠프 12.07 TIL (1) | 2023.12.22 |
내일배움캠프 12.06 TIL (2) | 2023.12.22 |
객체지향 프로그래밍 (2) | 2023.12.22 |
내일배움캠프 12.04 TIL (2) | 2023.12.22 |