// We start with creating some examples:
val definedInt
: Option
[Int
] = Some
(3) val undefinedInt
: Option
[Int
] = None
def double(i
: Int
): Option
[Int
] = Option
(2 * i
)
// Now let's get create String for each number or "empty" if there is no Int:
definedInt.map(_.toString).getOrElse("empty") // "3"
val undefinedStr
: String
= undefinedInt.map(_.toString).getOrElse("empty") // "empty"
// Let's try to execute some code only if value is not empty:
println(i) // prints "3"
}
for (i
<- undefinedInt
) { println(i) // never called
}
}
}
b2JqZWN0IE1haW4gZXh0ZW5kcyBBcHAgewpvdmVycmlkZSBkZWYgbWFpbihhcmdzOiBBcnJheVtTdHJpbmddKSB7CgkKLy8gV2Ugc3RhcnQgd2l0aCBjcmVhdGluZyBzb21lIGV4YW1wbGVzOgp2YWwgZGVmaW5lZEludDogICBPcHRpb25bSW50XSA9IFNvbWUoMykKdmFsIHVuZGVmaW5lZEludDogT3B0aW9uW0ludF0gPSBOb25lCgpkZWYgZG91YmxlKGk6IEludCk6IE9wdGlvbltJbnRdID0gT3B0aW9uKDIgKiBpKQoKLy8gTm93IGxldCdzIGdldCBjcmVhdGUgU3RyaW5nIGZvciBlYWNoIG51bWJlciBvciAiZW1wdHkiIGlmIHRoZXJlIGlzIG5vIEludDoKdmFsIGRlZmluZWRTdHI6ICAgU3RyaW5nID0KICBkZWZpbmVkSW50Lm1hcChfLnRvU3RyaW5nKS5nZXRPckVsc2UoImVtcHR5IikgLy8gIjMiCnZhbCB1bmRlZmluZWRTdHI6IFN0cmluZyA9CiAgdW5kZWZpbmVkSW50Lm1hcChfLnRvU3RyaW5nKS5nZXRPckVsc2UoImVtcHR5IikgLy8gImVtcHR5IgoKLy8gTGV0J3MgdHJ5IHRvIGV4ZWN1dGUgc29tZSBjb2RlIG9ubHkgaWYgdmFsdWUgaXMgbm90IGVtcHR5Ogpmb3IgKGkgPC0gZGVmaW5lZEludCkgewogIHByaW50bG4oaSkgLy8gcHJpbnRzICIzIgp9CmZvciAoaSA8LSB1bmRlZmluZWRJbnQpIHsKICBwcmludGxuKGkpIC8vIG5ldmVyIGNhbGxlZAp9CgoJCn0KfQ==