Trong thuật ngữ Java, ký hiệu là chuỗi nội bộ. Điều này có nghĩa, ví dụ, rằng so sánh bình đẳng tham khảo (eq
trong Scala và ==
trong Java) cho kết quả tương tự như so sánh bình đẳng bình thường (==
trong Scala và equals
trong Java): 'abcd eq 'abcd
sẽ trở thành sự thật, trong khi "abcd" eq "abcd"
có thể không, tùy thuộc vào JVM whims (tốt, nó nên cho literals, nhưng không cho dây tạo ra động nói chung).
ngôn ngữ khác mà sử dụng những biểu tượng là Lisp (trong đó sử dụng 'abcd
như Scala), Ruby (:abcd
), Erlang và Prolog (abcd
; chúng được gọi là các nguyên tử thay vì các biểu tượng).
Tôi sẽ sử dụng một biểu tượng khi tôi không quan tâm đến cấu trúc của một chuỗi và sử dụng nó hoàn toàn như một cái tên cho một cái gì đó. Ví dụ, nếu tôi có một bảng cơ sở dữ liệu đại diện cho đĩa CD, trong đó bao gồm một cột có tên là "price", tôi không quan tâm rằng ký tự thứ hai trong "price" là "r", hoặc về các tên cột nối; do đó, một thư viện cơ sở dữ liệu trong Scala có thể sử dụng hợp lý các biểu tượng cho các tên bảng và cột.
Nguồn
2009-04-23 07:58:06
Nó có thể đáng nhớ rằng == trong Scala hiện.bằng điều, do đó, thực sự sự khác biệt sẽ được khi sử dụng phương pháp "eq" mà tham chiếu bình đẳng. Tuy nhiên, một phần thưởng là so sánh giữa các biểu tượng cực kỳ rẻ. – Calum
@Calum, như là so sánh giữa hai chuỗi. Java thực tập (nhiều hơn hoặc ít hơn) tất cả các chuỗi. –
@Elazar: Điều đó có thực sự đúng không? Tôi đã ấn tượng rằng Java chỉ tập trung vào các chữ (nghĩa là gần như tất cả các chuỗi trong các ví dụ tầm thường, và hầu như không có chuỗi trong phần mềm sản xuất). Có nói rằng các trường hợp sử dụng các ký hiệu thường là giá trị theo nghĩa đen (tôi nghi ngờ bạn thường xây dựng chúng từ đầu), do đó, cho rằng lợi thế chính bạn nhận được chỉ là một kiểu mô tả hơn. – Calum