Bộ sưu tập Scala - Tùy chọn
Scala Option [T] là một vùng chứa không hoặc một phần tử của một kiểu nhất định. Tùy chọn [T] có thể làSome[T] hoặc là Noneđối tượng, đại diện cho một giá trị bị thiếu. Ví dụ: phương thức get của Scala's Map tạo ra Some (giá trị) nếu một giá trị tương ứng với một khóa nhất định đã được tìm thấy, hoặcNone nếu khóa đã cho không được xác định trong Bản đồ.
Loại tùy chọn được sử dụng thường xuyên trong các chương trình Scala và bạn có thể so sánh loại này với nullgiá trị có sẵn trong Java cho biết không có giá trị. Ví dụ: phương thức get của java.util.HashMap trả về giá trị được lưu trữ trong HashMap hoặc null nếu không tìm thấy giá trị nào.
Giả sử chúng ta có một phương thức lấy một bản ghi từ cơ sở dữ liệu dựa trên một khóa chính.
def findPerson(key: Int): Option[Person]
Phương thức sẽ trả về Một số [Người] nếu bản ghi được tìm thấy nhưng Không có nếu bản ghi không được tìm thấy. Hãy cùng chúng tôi theo dõi chương trình sau đây.
Thí dụ
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" ))
}
}
Lưu chương trình trên vào Demo.scala. Các lệnh sau được sử dụng để biên dịch và thực thi chương trình này.
Chỉ huy
\>scalac Demo.scala
\>scala Demo
Đầu ra
capitals.get( "France" ) : Some(Paris)
capitals.get( "India" ) : None
Cách phổ biến nhất để tách các giá trị tùy chọn là thông qua đối sánh mẫu. Ví dụ, hãy thử chương trình sau.
Thí dụ
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 => "?"
}
}
Lưu chương trình trên vào Demo.scala. Các lệnh sau được sử dụng để biên dịch và thực thi chương trình này.
Chỉ huy
\>scalac Demo.scala
\>scala Demo
Đầu ra
show(capitals.get( "Japan")) : Tokyo
show(capitals.get( "India")) : ?
Sử dụng phương thức getOrElse ()
Sau đây là chương trình ví dụ để hiển thị cách sử dụng phương thức getOrElse () để truy cập một giá trị hoặc một giá trị mặc định khi không có giá trị nào.
Thí dụ
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) )
}
}
Lưu chương trình trên vào Demo.scala. Các lệnh sau được sử dụng để biên dịch và thực thi chương trình này.
Chỉ huy
\>scalac Demo.scala
\>scala Demo
Đầu ra
a.getOrElse(0): 5
b.getOrElse(10): 10
Sử dụng phương thức isEmpty ()
Sau đây là chương trình ví dụ để hiển thị cách sử dụng phương thức isEmpty () để kiểm tra xem tùy chọn có là Không có hay không.
Thí dụ
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 )
}
}
Lưu chương trình trên vào Demo.scala. Các lệnh sau được sử dụng để biên dịch và thực thi chương trình này.
Chỉ huy
\>scalac Demo.scala
\>scala Demo
Thí dụ
a.isEmpty: false
b.isEmpty: true