2014-04-07 18 views
6

cách tốt nhất để làm điều này là gì:Giảm tùy chọn trong scala?

def reduce[A](x: Option[A], y: Option[A])(f: (A, A) => A): Option[A] = 
    (x, y) match { 
    case (Some(a), Some(b)) => Some(f(a, b)) 
    case (None, None) => None 
    case (_, None) => x 
    case (None, _) => y 
    } 

Tôi nhìn this câu hỏi nhưng trường hợp của anh là hơi khác với tôi ...

Trả lời

14

Các ngắn nhất có lẽ là

(x ++ y).reduceLeftOption(f) 

mà hoạt động vì chuyển đổi tiềm ẩn từ Option đến Iterable xảy ra để có phương thức thực hiện chính xác những gì bạn cần.

Các vấn đề liên quan