Scala Koleksiyonları - Seçenek

Scala Seçeneği [T], sıfır veya belirli bir türden bir eleman için bir kaptır. Bir Seçenek [T],Some[T] veya Noneeksik bir değeri temsil eden nesne. Örneğin, belirli bir anahtara karşılık gelen bir değer bulunursa, Scala Haritasının get yöntemi Bazı (değer) üretir veyaNone verilen anahtar haritada tanımlı değilse.

Seçenek tipi, Scala programlarında sıklıkla kullanılır ve bunu, nullJava'da hiçbir değer belirtmeyen değer. Örneğin, java.util.HashMap'in get yöntemi, HashMap'te saklanan bir değeri veya hiçbir değer bulunmadıysa null döndürür.

Bir birincil anahtara dayalı olarak veritabanından bir kayıt alan bir yöntemimiz olduğunu varsayalım.

def findPerson(key: Int): Option[Person]

Yöntem, kayıt bulunursa Some [Person], ancak kayıt bulunamazsa None döndürür. Aşağıdaki programı takip edelim.

Misal

object Demo {
   def main(args: Array[String]) {
      val capitals = Map("France" -> "Paris", "Japan" -> "Tokyo")
      println("capitals.get( \"France\" ) : " +  capitals.get( "France" ))
      println("capitals.get( \"India\" ) : " +  capitals.get( "India" ))
   }
}

Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.

Komut

\>scalac Demo.scala
\>scala Demo

Çıktı

capitals.get( "France" ) : Some(Paris)
capitals.get( "India" ) : None

İsteğe bağlı değerleri ayırmanın en yaygın yolu bir kalıp eşleştirmesidir. Örneğin aşağıdaki programı deneyin.

Misal

object Demo {
   def main(args: Array[String]) {
      val capitals = Map("France" -> "Paris", "Japan" -> "Tokyo")
      println("show(capitals.get( \"Japan\")) : " + show(capitals.get( "Japan")) )
      println("show(capitals.get( \"India\")) : " + show(capitals.get( "India")) )
   }
   def show(x: Option[String]) = x match {
      case Some(s) => s
      case None => "?"
   }
}

Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.

Komut

\>scalac Demo.scala
\>scala Demo

Çıktı

show(capitals.get( "Japan")) : Tokyo
show(capitals.get( "India")) : ?

GetOrElse () Yöntemini Kullanma

Aşağıda, bir değere erişmek için getOrElse () yönteminin nasıl kullanılacağını gösteren örnek program veya değer olmadığında varsayılan bir program verilmiştir.

Misal

object Demo {
   def main(args: Array[String]) {
      val a:Option[Int] = Some(5)
      val b:Option[Int] = None 
      println("a.getOrElse(0): " + a.getOrElse(0) )
      println("b.getOrElse(10): " + b.getOrElse(10) )
   }
}

Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.

Komut

\>scalac Demo.scala
\>scala Demo

Çıktı

a.getOrElse(0): 5
b.getOrElse(10): 10

İsEmpty () Yöntemini Kullanma

Aşağıda, seçeneğin None olup olmadığını kontrol etmek için isEmpty () yönteminin nasıl kullanılacağını gösteren örnek program verilmiştir.

Misal

object Demo {
   def main(args: Array[String]) {
      val a:Option[Int] = Some(5)
      val b:Option[Int] = None 
      println("a.isEmpty: " + a.isEmpty )
      println("b.isEmpty: " + b.isEmpty )
   }
}

Yukarıdaki programı şuraya kaydedin: Demo.scala. Bu programı derlemek ve çalıştırmak için aşağıdaki komutlar kullanılır.

Komut

\>scalac Demo.scala
\>scala Demo

Misal

a.isEmpty: false
b.isEmpty: true