학습
Scala 함수 정의
Scala 함수 정의 — 초급
함수 정의
1. 도입 (왜 배워야 하는가)
함수는 프로그래밍의 가장 기본적인 구성 요소 중 하나입니다. 실무에서는 특정 작업을 수행하는 코드 블록을 재사용 가능하게 만들어야 할 때가 많습니다. 함수가 없다면 반복적인 코드를 작성해야 하고, 이는 코드의 가독성을 낮추고 유지보수를 어렵게 만듭니다. 예를 들어, 쇼핑몰의 장바구니 기능을 구현할 때, 동일한 계산을 여러 곳에서 반복하는 대신 함수를 정의해두면 코드가 훨씬 깔끔해지고 오류를 줄일 수 있습니다. 만약 함수를 모른다면, 코드의 재사용성을 떨어뜨리고, 유지보수하는 데 많은 시간을 소모할 것입니다.
2. 핵심 개념 설명
함수(Function)
함수는 특정 작업을 수행하는 코드 블록으로, 입력값을 받아 결과를 반환합니다. 실생활에서 요리 레시피를 생각해보면, 요리법이 함수의 역할을 합니다. 재료(입력)를 넣으면 요리가 완성(출력)됩니다.
관련 용어 정리
| 용어 | 설명 |
|---|---|
| 매개변수 | 함수가 입력으로 받는 값 |
| 반환값 | 함수가 수행 후 반환하는 결과값 |
| 호출 | 정의된 함수를 실제로 실행하는 것 |
| 가독성 | 코드가 얼마나 읽기 쉽고 이해하기 쉬운지 |
3. 기본 코드 예제
아래는 기본적인 함수 정의와 호출 방법입니다.
// 두 숫자의 합을 반환하는 함수 정의
def add(a: Int, b: Int): Int = {
a + b // 두 숫자를 더해서 반환
}
// 함수 호출
val sum = add(5, 3) // sum 변수에 add 함수의 결과 저장
println(sum) // 결과 출력
실행 결과:
8
def add(a: Int, b: Int): Int = {:add라는 이름의 함수를 정의합니다. 이 함수는 두 개의 정수(Int)를 매개변수로 받고, 정수(Int)를 반환합니다.a + b: 매개변수로 받은 두 숫자를 더해서 반환합니다.val sum = add(5, 3):add함수를 호출하여 5와 3을 더한 결과를sum변수에 저장합니다.println(sum):sum변수를 출력하여 결과를 확인합니다.
4. 실전 활용 예제
예제 1: 장바구니 총합 계산
쇼핑몰에서 장바구니에 담긴 상품 가격의 총합을 계산할 때 아래와 같은 함수를 사용할 수 있습니다.
def calculateTotal(prices: List[Double]): Double = {
prices.sum // List의 합계를 계산하여 반환
}
val cartPrices = List(29.99, 15.50, 9.99) // 장바구니 가격 리스트
val total = calculateTotal(cartPrices) // 총합 계산
println(s"총합: $$total") // 결과 출력
상황 설명: 사용자가 장바구니에 여러 상품을 담고, 그 가격의 총합을 계산하여 결제할 때 사용됩니다.
예제 2: 문자열 길이 확인
사용자가 입력한 문자열의 길이를 확인하는 함수입니다.
def stringLength(str: String): Int = {
str.length // 문자열의 길이를 반환
}
val myString = "Hello, Scala!"
val length = stringLength(myString) // 문자열 길이 계산
println(s"문자열 길이: $length") // 결과 출력
상황 설명: 사용자 입력을 처리할 때, 입력된 문자열의 길이를 확인하여 유효성을 검사하는 데 유용합니다.
5. 흔한 실수와 주의사항
실수 1: 매개변수 타입 미지정
// 잘못된 코드
def add(a, b) = {
a + b
}
올바른 코드
// 올바른 코드
def add(a: Int, b: Int): Int = {
a + b
}
실수 2: 반환값이 없는 함수
// 잘못된 코드
def printMessage(): Unit = {
println("Hello!")
}
val result = printMessage() // 결과를 변수에 저장
printMessage 함수는 반환값이 없는데 이를 변수에 저장하려고 하여 경고가 발생합니다.올바른 코드
// 올바른 코드
def printMessage(): Unit = {
println("Hello!")
}
printMessage() // 함수 호출로 결과 출력
6. 정리
다음에 학습하면 좋은 주제: 고차 함수(High-order Function), 익명 함수(Anonymous Function).