문보다 식
모든 것이 값을 반환합니다.
문보다 식은(는) CoddyKit의 무료 Scala for Backend Engineering & Functional Programming 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Scala for Backend Engineering & Functional Programming 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Scala for Backend Engineering & Functional Programming 강의에는 총 4개의 강의가 포함되어 있습니다.
모든 것은 표현식입니다
많은 언어에서 if와 블록은 작업을 수행하지만 값을 만들지 않는 문입니다. Scala에서는 이것들이 값을 계산하는 표현식입니다.
이러한 변화는 Scala 함수형 프로그래밍의 핵심입니다.
val max = if (3 > 2) 3 else 2표현식으로서의 if
Scala의 if/else는 실행되는 분기의 값을 반환합니다. 그 결과를 val에 바로 할당할 수 있습니다.
분기 안에서 값을 설정하는 가변 변수가 필요하지 않습니다.
object Main extends App {
val temp = 18
val label = if (temp > 20) "warm" else "cool"
println(label)
}블록은 마지막 줄을 반환합니다
{ ... } 블록 자체가 표현식입니다. 블록의 값은 내부에 있는 마지막 표현식의 값입니다.
여기서 블록은 30으로 계산되고, 이 값이 result의 값이 됩니다.
object Main extends App {
val result = {
val a = 10
val b = 20
a + b
}
println(result)
}명시적인 return은 필요하지 않습니다
메서드 본문은 표현식이므로 그 값은 마지막으로 계산된 표현식의 값입니다. return 키워드는 거의 사용하지 않습니다.
아래 두 메서드는 같은 방식으로 동작하지만, 관용적인 방식에서는 return을 생략합니다.
def double(x: Int) = x * 2
// instead of: def double(x: Int) = { return x * 2 }match도 표현식입니다
match를 사용한 패턴 매칭도 값을 생성하므로, 입력을 결과에 매핑하는 데 적합합니다.
각 case 분기는 해당 분기의 값을 생성합니다.
object Main extends App {
val day = 3
val name = day match {
case 1 => "Mon"
case 3 => "Wed"
case _ => "Other"
}
println(name)
}표현식은 조합할 수 있습니다
표현식은 값을 반환하므로 자유롭게 중첩하고 조합할 수 있습니다.
if를 함수의 인수로 사용하거나 더 큰 계산의 일부로 사용할 수 있으므로 임시 변수가 필요하지 않습니다.
object Main extends App {
val n = 7
println("sign: " + (if (n >= 0) "+" else "-"))
}문도 여전히 존재합니다
모든 것이 유용한 값을 생성하는 것은 아닙니다. println이나 대입처럼 부수 효과만을 위해 수행되는 연산은 Unit으로 계산됩니다.
이러한 것이 Scala의 문과 유사한 표현식입니다.
val x: Unit = println("hello") // value is ()표현식에서는 var를 피하십시오
표현식 중심 방식에서는 가변 var 패턴을 다른 방식으로 바꿀 수 있습니다. var를 선언하고 분기에서 대입하는 대신, 전체 if를 val에 할당하십시오.
object Main extends App {
val score = 85
val grade = if (score >= 90) "A" else if (score >= 80) "B" else "C"
println(grade)
}for는 값을 생성합니다
for와 yield를 함께 사용하면 부수 효과를 위해 단순히 반복하는 대신 새로운 컬렉션을 만드는 표현식이 됩니다.
이렇게 하면 반복이 값을 생성하는 변환으로 바뀝니다.
object Main extends App {
val squares = for (i <- 1 to 4) yield i * i
println(squares)
}백엔드 코드에서 중요한 이유
표현식 중심 코드는 대체로 더 짧고, 구성 요소가 적으며, 테스트하기 쉽습니다.
- 가변 변수가 줄어들면 버그도 줄어듭니다.
- 결과가 입력에서 자연스럽게 흘러 나옵니다.
- Scala의 함수형 라이브러리와 잘 조합됩니다.
문 방식과 표현식 방식
두 가지 사고방식을 비교해 보십시오. 문 방식은 변수를 변경하고, 표현식 방식은 값을 바로 반환합니다.
Scala에서는 두 방식 모두 사용할 수 있지만 표현식 방식을 선호합니다.
var s = "" // statement style
if (true) s = "yes" else s = "no"
val e = if (true) "yes" else "no" // expression style빠른 확인
Scala에서 if/else는 무엇으로 계산됩니까?
복습
Scala는 상태만 변경하는 문보다 값을 생성하는 표현식을 선호합니다.
if,match, 블록,for/yield는 모두 값을 반환합니다.- 메서드 본문은 마지막 표현식을 반환하므로
return은 거의 필요하지 않습니다. - 부수 효과가 있는 코드는
Unit을 반환합니다. - 이 방식은
var사용과 버그를 줄여 줍니다.
AI 튜터와 함께 Scala을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 39
- 레슨
- 143
자주 묻는 질문
“문보다 식” 강의는 무료인가요?
네 — “문보다 식” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Scala for Backend Engineering & Functional Programming 강의 전체를 잠금 해제할 수 있습니다. Scala for Backend Engineering & Functional Programming 강의에는 총 4개의 강의가 포함되어 있습니다.
“문보다 식”에서 뭘 배우나요?
모든 것이 값을 반환합니다. 브라우저에서 직접 실행하는 실습 코드로 Scala for Backend Engineering & Functional Programming을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Scala for Backend Engineering & Functional Programming을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Scala for Backend Engineering & Functional Programming은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“문보다 식” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Scala for Backend Engineering & Functional Programming 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Scala for Backend Engineering & Functional Programming 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.