Không có sự khác biệt, tuy nhiên nó cũng không phải là lỗi. Trong trường hợp này:
"1" + 1
bạn đang sử dụng tính năng tích hợp của Java để nối bất kỳ thứ gì vào chuỗi. Sau khi tất cả, nhiều người chuyển đổi số thành chuỗi bằng cách sử dụng "thành ngữ" như sau:
String s = "" + 5;
Nó hoạt động trong Scala như tốt và kết quả với java.lang.String
- giống như trong Java.
Mặt khác:
1 + "1"
là một chút phức tạp hơn. Này được dịch sang:
1.+("1")
và phương pháp +()
được lấy từ Int.+
phương pháp nằm ở Int.scala
:
final class Int extends AnyVal {
//....
def +(x: String): String = sys.error("stub")
Các String
trong bối cảnh này được định nghĩa trong Predef.scala
:
type String = java.lang.String
mà là nguồn của loại "khác biệt ". Như bạn có thể thấy cả hai chuỗi trên thực tế là cùng loại.
Nguồn
2012-01-30 14:54:31
Câu hỏi tương tự: http://stackoverflow.com/questions/6559938/scala-string-vs-java-lang-string-type-inference –
Cả hai trả về 'Chuỗi' trong Scala 2.10. – soc