2012-11-07 29 views
7

Tôi đang cố gắng để kiểm tra xem một số trang web là bằng cách sử dụng các chức năng sau:Scala Liftweb - loại mô hình là không phù hợp với mong đợi loại

import net.liftweb.common.{Failure, Empty, Full, Box}    // 1 
                    // 2 
def isAlive = {              // 3 
    httpClient.getAsString("http://www.google.com", Nil) match { // 4 
     case f : Full[String] => true        // 5 
     case f : Failure => false         // 6 
     case Empty => false           // 7 
    }                // 8 
}                 // 9 

Chức năng loại getAsString trở lại là net.liftweb.common.Box[String]

Chức năng hoạt động tốt nhưng vấn đề của tôi là khi tôi thay dòng 6 bằng dòng này:

 case Failure => false          // 6 

Tôi gặp lỗi:

error: pattern type is incompatible with expected type; 
found : object net.liftweb.common.Failure 
required: net.liftweb.common.Box[String] 
case Failure => false 

(điều tương tự đúng đối với dòng 5)

Tại sao nó xảy ra? Tại sao tôi phải sử dụng biến cho trận đấu và không thể thực hiện trận đấu theo loại chỉ?

Trả lời

5

Bạn không thể phù hợp như vậy dựa trên loại, nếu bạn sử dụng Không như một mô hình bạn phải phù hợp trên một construuctor:

case Failure(_, _, _) => false 
Các vấn đề liên quan