Latest web development tutorials

Pilihan Scala (Option)

koleksi scala koleksi scala

Scala Option (Option) jenis yang digunakan untuk mewakili nilai yang opsional (untuk nilai atau tidak ada nilai).

Option [T] adalah jenis wadah nilai opsional T: Jika nilai ada, opsi [T] adalah Beberapa [T], jika Anda tidak ada, pilihan [T] adalah objek ada.

Berikutnya kita melihat sepotong kode:

// 虽然 Scala 可以不定义变量的类型,不过为了清楚些,我还是
// 把他显示的定义上了
 
val myMap: Map[String, String] = Map("key1" -> "value")
val value1: Option[String] = myMap.get("key1")
val value2: Option[String] = myMap.get("key2")
 
println(value1) // Some("value1")
println(value2) // None

Pada kode di atas, myMap satu jenis Key adalah String, String Jenis nilai adalah peta hash, tetapi tidak sama dengan get nya () mengembalikan sebuah kategori bernama Option [String].

Scala menggunakan Option [String] untuk memberitahu Anda: "Saya akan mencoba untuk kembali String, tetapi mungkin tidak memberikan String."

myMap tidak Key2 data ini, mendapatkan () method mengembalikan Tidak ada.

Pilihan dua subkategori, satu Beberapa satu None, ketika ia kembali Beberapa waktu, atas nama fungsi ini berhasil memberi Anda String, dan Anda dapat () fungsi untuk mendapatkan ini melalui String mendapatkan, Jika dia kembali ada, itu merupakan ada string dapat memberikan.

Contoh lain:

object Test {
   def main(args: Array[String]) {
      val sites = Map("w3big" -> "www.w3big.com", "google" -> "www.google.com")
      
      println("sites.get( \"w3big\" ) : " +  sites.get( "w3big" )) // Some(www.w3big.com)
      println("sites.get( \"baidu\" ) : " +  sites.get( "baidu" ))  //  None
   }
}

Pelaksanaan kode di atas, output adalah:

$ scalac Test.scala 
$ scala Test
sites.get( "w3big" ) : Some(www.w3big.com)
sites.get( "baidu" ) : None

Anda dapat juga keluaran untuk mencocokkan nilai dengan pencocokan pola. Contohnya adalah sebagai berikut:

object Test {
   def main(args: Array[String]) {
      val sites = Map("w3big" -> "www.w3big.com", "google" -> "www.google.com")
      
      println("show(sites.get( \"w3big\")) : " +  
                                          show(sites.get( "w3big")) )
      println("show(sites.get( \"baidu\")) : " +  
                                          show(sites.get( "baidu")) )
   }
   
   def show(x: Option[String]) = x match {
      case Some(s) => s
      case None => "?"
   }
}

Pelaksanaan kode di atas, output adalah:

$ scalac Test.scala 
$ scala Test
show(sites.get( "w3big")) : www.w3big.com
show(sites.get( "baidu")) : ?

getOrElse () metode

Anda dapat menggunakan metode getOrElse () untuk mendapatkan tupel yang ada atau menggunakan nilai default, contoh adalah sebagai berikut:

object Test {
   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) )
   }
}

Pelaksanaan kode di atas, output adalah:

$ scalac Test.scala 
$ scala Test
a.getOrElse(0): 5
b.getOrElse(10): 10

isEmpty () metode

Anda dapat menggunakan metode isEmpty () untuk mendeteksi apakah elemen tuple ke Tidak ada, contoh adalah sebagai berikut:

object Test {
   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 )
   }
}

Pelaksanaan kode di atas, output adalah:

$ scalac Test.scala 
$ scala Test
a.isEmpty: false
b.isEmpty: true

Scala Pilihan metode umum

Tabel berikut berisi daftar Option Scala metode yang umum digunakan:

Tidak. Metode dan Deskripsi
1

def mendapatkan: A

Mendapatkan nilai opsional

2

def isEmpty: Boolean

Nilai jenis opsional mendeteksi apakah akan ada, hal ini terjadi mengembalikan nilai true, false jika tidak

3

def productArity: Int

Mengembalikan jumlah elemen, A (x_1, ..., x_k), mengembalikan k

4

def productElement (n: Int): Setiap

Mendapat opsi ditentukan, dimulai dengan nol. Yaitu A (x_1, ..., x_k), kembali x_ (n + 1), 0 <n <k.

5

def ada (p: (A) => Boolean): Boolean

Jika opsi apakah kondisi yang ditentukan elemen ada dan tidak ada mengembalikan true, jika tidak maka kembali palsu.

6

def menyaring (p: (A) => Boolean): Option [A]

Con Jika opsi yang berisi nilai, dan lulus untuk menyaring hasil yang benar, penyaring mengembalikan Beberapa contoh. Jika tidak, nilai kembali adalah None.

7

def filterNot (p: (A) => Boolean): Option [A]

Con Jika opsi yang berisi nilai, dan lulus untuk menyaring hasil palsu, penyaring mengembalikan Beberapa contoh. Jika tidak, nilai kembali adalah None.

8

def flatMap [B] (f: (A) => Option [B]): Pilihan [B]

Jika pilihan memiliki nilai, kemudian diteruskan ke fungsi f kembali setelah perawatan, jika tidak maka kembali Tidak

9

def foreach [U] (f: (A) => U): Satuan

Jika opsi yang berisi nilai, maka setiap nilai dilewatkan ke fungsi f, atau tidak diobati.

10

def getOrElse [B>: A] (default: => B): B

Jika pilihan memiliki nilai, nilai opsi dikembalikan, jika tidak nilai default ditetapkan.

11

def isDefined: Boolean

Jika nilai opsional adalah turunan Beberapa pengembalian benar, jika tidak kembali palsu.

12

def iterator: Iterator [A]

Jika pilihan memiliki nilai, nilai iterasi opsional. Jika nilai opsional kosong iterator kosong dikembalikan.

13

def map [B] (f: (A) => B): Pilihan [B]

Jika opsi yang berisi nilai, dikembalikan oleh fungsi f Beberapa pos-pengolahan, jika tidak kembali ada

14

def OrElse [B>: A] (alternatif: => Option [B]): Pilihan [B]

Jika Option adalah None, metode OrElse mengembalikan nilai parameter dengan nama, jika tidak, ia mengembalikan langsung ke Option.

15

def orNull

Jika opsi yang berisi nilai-nilai opsi mengembalikan nilai, jika tidak kembali nol.

koleksi scala koleksi scala