Динамически загружать новые модули во время выполнения с помощью Angular CLI & amp; Угловой 5

Существует много способов борьбы с типом Option. Прежде всего, однако, поймите, насколько лучше иметь это вместо потенциальной ссылки null! Не пытайтесь избавиться от него просто потому, что вы привыкли к тому, как работает Java.

Как недавно сказал кто-то другой: придерживайтесь его в течение нескольких недель, и вы будете стонать каждый раз, когда вам нужно вернуться на язык, который не предлагает типы Option.

Теперь, что касается вашего вопроса, самым простым и рискованным способом является следующее:

mymap.get(something).get

Вызов .get на Объект Some извлекает объект внутри. Тем не менее, это дает вам исключение во время выполнения, если вместо этого у вас есть None (например, если ключ не был на вашей карте).

Более чистый способ - использовать Option.foreach или Option.map вот так:

scala> val map = Map(1 -> 2)
map: scala.collection.immutable.Map[Int,Int] = Map(1 -> 2)

scala> map.get(1).foreach( i => println("Got: " + i))
Got: 2

scala> map.get(2).foreach( i => println("Got: " + i))

scala> 

Как вы можете видеть, это позволяет вам выполнять оператор тогда и только тогда, когда у вас есть фактическое значение. Если Option - None, ничего не произойдет.

Наконец, также популярно использовать сопоставление паттернов на типах Option следующим образом:

scala> map.get(1) match {
     |  case Some(i) => println("Got something")
     |  case None => println("Got nothing")
     | }
Got something
35
задан Lars Meijdam 2 August 2018 в 06:39
поделиться