2012-02-05 12 views
17

Mã scala rất đơn giản:Tại sao đang scala này báo cáo lỗi biên dịch: Giá trị recursive x nhu cầu gõ

case class X(id: Option[String] = None, username: Option[String]) 

object X { 
    def create(x: X): X = { 
    x.copy(id = Some("111")) 
    } 
} 

class Test { 

    def test() { 
    val x = X.create(X(
     username = Some("Hello, world!"))) 

    val id = x.id.get // !!! reports: recursive value x needs type 
    } 

} 

Xin lưu ý dòng:

val id = x.id.get 

Tại sao nó báo cáo recursive value x needs type?

Nếu tôi thay đổi tên biến, như:

val dd = x.id.get 

Nó sẽ là OK.

PS: phiên bản scala là: 2.9.1.final

+0

Thú vị ... Tôi vừa mới tweet nó, trong trường hợp ... http://bit.ly/zU52GP –

+0

Đã gửi: https://issues.scala-lang.org/browse/SI-5434 – Freewind

+0

Thực ra đó là bản sao của [SI-5091] (https://issues.scala-lang.org/browse/SI-5091) ... bạn nên thêm ví dụ này vào vé đó. –

Trả lời

16

Loại bỏ tham số mặc định cho id trong định nghĩa của trường hợp lớp X cũng sửa chữa vấn đề đó cho thấy rằng đây là một thể hiện của SI-5091.

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