2016-02-04 12 views
5

Khi làm điều này:một biểu hiện của kiểu Null không đủ điều kiện cho ngầm chuyển đổi

def myfunction(line: String): (Int, Option[DateTime], Option[Int]) = { 
    // do some stuff 
    (5, Option(null), Option(null)) 
    } 

tôi nhận được như sau:

một biểu hiện của kiểu Null không đủ điều kiện cho chuyển đổi ngầm

Tôi không chắc chắn cách khắc phục.

+1

'Int' không phải là nơi sinh sống của' null'. – Lee

+0

Để cải thiện gợi ý của Lee: 'Int' sẽ được ánh xạ tới nguyên gốc' Int' từ JVM trong trường hợp áp dụng. Do đó, không thể sử dụng 'null' trong bất kỳ trường hợp nào cho một Int. – bash0r

+1

viết 'null' trong Scala là phần nào của một anathema ... –

Trả lời

13

Option(null) có giới hạn dưới Option[Null], trong đó Null là loại dưới cùng của tất cả các loại tham chiếu. Int là loại giá trị và không phải là loại tham chiếu. tức là bạn không thể chỉ định null cho một số Int. Vì vậy, bạn không thể chỉ định Option[Null] đến Option[Int].

Sử dụng Option.empty[Int] hoặc None để thay thế.

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