← Back to Scala Course | Chapter 11: Error Handling & Option | Lesson 3 of 7

Option पर map और getOrElse

किसी Option पर map अंदर की value को बदलता है अगर एक हो, जबकि getOrElse एक backup देता है अगर box खाली हो। यह ice cream होने पर sprinkles जोड़ने, या न होने पर cookie देने जैसा है।
Syntax
scala
val mapped = option.map(x => expression)
val result = option.getOrElse(default_value)

map and getOrElse on Option

.map(f) किसी Option पर wrapped value को transform करता है अगर वह मौजूद हो, None को बिना छुए छोड़ देता है, आम मामले के लिए किसी explicit if/pattern match की ज़रूरत के बिना।

.getOrElse(default) मौजूद होने पर value निकालता है, या न होने पर एक default पर गिरता है -- .get का एक सुरक्षित विकल्प। .map के बाद .getOrElse को chain करना किसी optional value को सुरक्षित रूप से process करने का एक बहुत आम idiom है।

Note: option.map(f).getOrElse(default) सबसे आम Option idioms में से एक है -- मौजूद होने पर transform करें, नहीं तो backup पर गिरें।

उदाहरण: map and getOrElse on Option

markup
object Main extends App {
  val price: Option[Double] = Some(19.99)
  val noPrice: Option[Double] = None

  val discounted = price.map(p => p * 0.9)
  println(discounted.getOrElse(0.0))
  println(noPrice.map(p => p * 0.9).getOrElse(0.0))
}
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. map का उपयोग करना जब function खुद एक Option return करता है, जिससे Option[Option[A]] बन जाता है; flatMap का उपयोग करें।
  2. getOrElse को अलग type के default के साथ call करना, जिससे result type Any तक फैल जाता है।
  3. यह उम्मीद करना कि None पर map function चलाएगा, जबकि यह कुछ नहीं करता और None return करता है।
🔒

Chapter Quiz — Complete all 7 topics to unlock

0/7 topics done

Complete these topics first:

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.