2016-02-26 10 views
6

Ben oluşturduğunuzda bu çağrı çalışır Neden bunasıl bir `Seçenek üzerinde ("anahtar")` `.get yapar [Harita [dize, dize]]` eser

scala> val x = Some(Map("foo" -> "bar")) 
x: Some[scala.collection.immutable.Map[String,String]] = Some(Map(foo -> bar)) 

gibi bir Option[Map[String,String]]:

x yana
scala> x.get("foo") 
res0: String = bar 

örneği Option ait olup case class Some üzerinde parametreleri kabul hiçbir yöntem get yoktur ve o sınıf bu işe gerektiğini, kesindir. IDE hiçbir ipucu vermiyor, neden bu işe yarıyor.

+1

Harita üzerinde başvuru yöntemini çağırıyor – hasumedic

cevap

11

Option, parametre listesine sahip olmayan get yöntemine sahiptir. Sadece bir argüman listesi olmadan adını get kullanarak çağrı: Eğer belli ki, is geri almak ne

scala> val x = Some(Map("foo" -> "bar")) 
x: Some[scala.collection.immutable.Map[String,String]] = Some(Map(foo -> bar)) 

scala> x.get // Note: no arguments 
res0: scala.collection.immutable.Map[String,String] = Map(foo -> bar) 

, Map.

("foo") get sonra Map uygulanır. Bu, Map'daki apply yöntemini çağırmak için kısayol sözdizimi olduğunu unutmayın. Yani x.get("foo"), x.get.apply("foo")'a eşdeğerdir.

scala> x.get("foo") // Shortcut syntax 
res2: String = bar 

scala> x.get.apply("foo") // For this 
res3: String = bar 
İlgili konular