2012-08-07 35 views
6

Ra quan tâm tại sao công việc này trong Scala:danh sách Scala chứa vs mảng chứa

val exceptions = List[Char]('+')  
assertTrue(exceptions.contains('+')) 

nhưng điều này không

val exceptions = new Array[Char]('+')  
assertTrue(exceptions.contains('+')) 
+3

Đây sẽ là một Scala Puzzler tuyệt vời! – soc

Trả lời

8

Bởi vì bạn đã viết mới ArrayChar. Làm như vậy, đối số là kích thước của mảng, và '+' là, thay vì không may, được chuyển đổi thành một int để cho kích thước. Và mảng được trả về đầy Char (0).

Bạn chỉ nên thực hiện Array[Char]('+'), '+' sau đó sẽ là phần tử đơn trong Mảng.

7

Cố gắng trong REPL, mà làm cho câu trả lời rõ ràng:

scala> val exceptions = new Array[Char]('+') 
exceptions: Array[Char] = Array(, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ) 

+ có chương trình khuyến mãi char-to-int.

scala> val exceptions = Array[Char]('+') 
exceptions: Array[Char] = Array(+) 

scala> exceptions.contains('+') 
res3: Boolean = true 

tương đương với trường hợp List.

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