2011-01-14 9 views
79

Giả sử tôi có một phương thức session.get(str: String): String nhưng bạn không biết liệu nó sẽ trả về cho bạn một chuỗi hay null, bởi vì nó đến từ Java.Đưa phương thức trả về null vào Java bằng Tùy chọn trong Scala?

Có cách nào dễ dàng hơn để xử lý điều này trong Scala thay vì session.get("foo") == null không? Có lẽ một số ma thuật áp dụng như ToOption(session.get("foo")) và sau đó tôi có thể đối xử với nó trong Scala cách như

ToOption(session.get("foo")) match { 
    case Some(_) =>; 
    case None =>; 
} 
+4

Để biết thêm các thủ thuật Tùy chọn, hãy xem http://blog.tmorris.net/ scalaoption-cheat-sheet/ – Landei

+3

Liên kết ở trên phải là http://blog.tmorris.net/posts/scalaoption-cheat-sheet/. –

Trả lời

140

Phương pháp đối tượng Option đồng hành của apply đóng vai trò như một chức năng chuyển đổi từ tài liệu tham khảo nullable:

scala> Option(null) 
res4: Option[Null] = None 

scala> Option(3) 
res5: Option[Int] = Some(3) 
14

Đối tượng Optionapply phương thức thực hiện chính xác điều đó:

var myOptionalString = Option(session.get("foo"));