Xin chào đồng Scala Các lập trình viênScala mẫu sẽ không phù hợp với java.lang.String và trường hợp lớp
Tôi đã làm việc với Scala đối với một số tháng nay, tuy nhiên tôi có một vấn đề với một số nội dung cơ bản đúng, tôi hy vọng bạn sẽ giúp tôi với nó.
case class PersonClass(name: String, age: Int)
object CaseTester {
def main(args:Array[String])
{
val string = "hej"
string match {
case e:String => println(string)
case PersonClass => println(string)
}
}
}
Khi tôi đang làm như thế này tôi nhận được lỗi:
pattern type is incompatible with expected type;
found : object PersonClass
required: java.lang.String
case PersonClass => println(string)
Và nếu tôi sau đó thay đổi dòng thứ hai trong mô hình phù hợp với những điều sau đây:
case e:PersonClass => println(string)
sau đó tôi nhận được lỗi:
error: scrutinee is incompatible with pattern type;
found : PersonClass
required: java.lang.String
case e:PersonClass => println(string)
Tuy nhiên nếu tôi thay đổi định nghĩa chuỗi sau đây, nó biên dịch tốt trong cả hai trường hợp.
val string:AnyRef = "hej"
Ban đầu tôi đã gặp sự cố khi cố tạo lớp vỏ cũng có thể là trình trích xuất, tuy nhiên khi tôi nghĩ về nó không có ý nghĩa gì nhiều :) – Stefan
Bạn không thể khớp với lớp học như thế. 'case PersonClass =>' chỉ hoạt động nếu 'PersonClass' là một đối tượng. Để kết hợp các lớp, bạn hoặc gán cho một biến cục bộ: 'case e: String =>' hoặc giải nén nếu nó là một tuple hoặc case case: '(3, 4) match {case (a, b) =>' – Ryan