for-comprehension에서 Option 사용
옵션을 연결합니다
for-comprehension에서 Option 사용은(는) 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개의 강의가 포함되어 있습니다.
Option을 깔끔하게 연결하기
여러 flatMap 및 map 호출을 연결하면 읽기 어려워질 수 있습니다. Scala의 for-comprehension은 같은 작업을 더 깔끔한 문법으로 작성하게 해 줍니다.
이는 컴파일러가 flatMap 및 map 호출로 다시 작성하는 문법적 편의 기능입니다.
기본 for-comprehension
for { ... } yield ... 안에서 각 x <- option은 값이 있으면 그 값을 꺼냅니다. yield는 최종 결과를 만듭니다.
모든 Option이 Some이면 결과의 Some을 얻게 됩니다.
object Main {
def main(args: Array[String]): Unit = {
val a: Option[Int] = Some(3)
val b: Option[Int] = Some(4)
val sum = for {
x <- a
y <- b
} yield x + y
println(sum)
}
}None에서 단축 평가하기
생성기 중 하나라도 None이면 전체 컴프리헨션의 결과가 None이 됩니다. 나머지 단계는 건너뜁니다.
이는 flatMap이 제공하는 것과 같은 단축 평가이지만 더 읽기 쉽습니다.
object Main {
def main(args: Array[String]): Unit = {
val a: Option[Int] = Some(3)
val b: Option[Int] = None
val sum = for {
x <- a
y <- b
} yield x + y
println(sum)
}
}문법이 어떻게 단순화되는가
컴파일러는 for-comprehension을 flatMap과 map으로 다시 작성합니다. 다음 두 코드는 동일합니다.
이를 이해하면 결과 타입을 예측하는 데 도움이 됩니다.
object Main {
def main(args: Array[String]): Unit = {
val a: Option[Int] = Some(3)
val b: Option[Int] = Some(4)
val viaFor = for { x <- a; y <- b } yield x + y
val viaFlatMap = a.flatMap(x => b.map(y => x + y))
println(viaFor)
println(viaFlatMap)
}
}앞에서 얻은 값 사용하기
뒤의 생성기에서는 앞에서 바인딩한 값을 참조할 수 있습니다. 따라서 각 단계가 이전 단계에 의존하도록 만들 수 있습니다.
object Main {
def main(args: Array[String]): Unit = {
val base: Option[Int] = Some(10)
val result = for {
x <- base
y <- Some(x * 2)
} yield x + y
println(result)
}
}중간 바인딩
=(화살표 없음)를 사용하면 컴프리헨션 안에서 일반 값을 도입할 수 있습니다. 중간 계산에 유용합니다.
object Main {
def main(args: Array[String]): Unit = {
val a: Option[Int] = Some(6)
val result = for {
x <- a
doubled = x * 2
} yield doubled + 1
println(result)
}
}if를 사용한 조건
컴프리헨션에는 if 필터를 포함할 수 있습니다. 조건을 만족하지 못하면 결과는 None이 됩니다.
object Main {
def main(args: Array[String]): Unit = {
val a: Option[Int] = Some(8)
val even = for {
x <- a
if x % 2 == 0
} yield x
println(even)
val b: Option[Int] = Some(7)
println(for { x <- b if x % 2 == 0 } yield x)
}
}여러 조회 조합하기
일반적인 사용 방법은 여러 키를 조회한 뒤, 모든 키가 존재할 때만 이를 조합하는 것입니다.
object Main {
val data = Map("a" -> 1, "b" -> 2)
def main(args: Array[String]): Unit = {
val combined = for {
x <- data.get("a")
y <- data.get("b")
} yield x + y
println(combined)
val missing = for {
x <- data.get("a")
z <- data.get("c")
} yield x + z
println(missing)
}
}for-comprehension을 사용하는 이유
다음과 같은 이점이 있습니다.
- 서로 의존하는 Option을 읽기 쉽게 순서대로 처리
None에서 자동으로 단축 평가- flatMap/map과 같은 기능을 더 평평한 형태로 제공
if를 사용한 필터링 및 중간=바인딩
값으로 마무리하기
컴프리헨션은 Option을 반환하므로, 일반 값을 얻으려면 getOrElse 또는 fold로 마무리합니다.
object Main {
def main(args: Array[String]): Unit = {
val a: Option[Int] = Some(3)
val b: Option[Int] = Some(4)
val total = (for { x <- a; y <- b } yield x + y).getOrElse(0)
println(total)
}
}하나로 연결하기
전체 처리 흐름은 두 입력을 파싱하고, 조건을 확인한 뒤, 결합하고, 기본값을 제공하는 것입니다.
object Main {
def parse(s: String): Option[Int] = s.toIntOption
def main(args: Array[String]): Unit = {
val result = for {
x <- parse("10")
y <- parse("5")
if y != 0
} yield x / y
println(result.getOrElse(-1))
}
}빠른 확인
Option에 대한 for-comprehension의 이해도를 확인해 보세요.
복습
for-comprehension으로 Option을 연결하는 방법을 배웠습니다.
for { x <- a; y <- b } yield ...는 Option을 읽기 쉽게 순서대로 처리합니다.- 이는
flatMap/map으로 단순화됩니다. - 어떤
None이든 전체 결과를None으로 단축 평가합니다. - 뒤의 생성기는 앞에서 얻은 값을 사용할 수 있고,
=는 바인딩을 추가하며,if는 필터링합니다. - 일반 값을 얻으려면
getOrElse또는fold로 마무리합니다.
AI 튜터와 함께 Scala을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 39
- 레슨
- 143
자주 묻는 질문
“for-comprehension에서 Option 사용” 강의는 무료인가요?
네 — “for-comprehension에서 Option 사용” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Scala for Backend Engineering & Functional Programming 강의 전체를 잠금 해제할 수 있습니다. Scala for Backend Engineering & Functional Programming 강의에는 총 4개의 강의가 포함되어 있습니다.
“for-comprehension에서 Option 사용”에서 뭘 배우나요?
옵션을 연결합니다 브라우저에서 직접 실행하는 실습 코드로 Scala for Backend Engineering & Functional Programming을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Scala for Backend Engineering & Functional Programming을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Scala for Backend Engineering & Functional Programming은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“for-comprehension에서 Option 사용” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Scala for Backend Engineering & Functional Programming 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Scala for Backend Engineering & Functional Programming 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- null 피하기
- Option의 map과 flatMap
- getOrElse와 fold
- for-comprehension에서 Option 사용