Có một sự khác biệt giữa các ''
trích dẫn đơn và kép ""
trong Ruby về những gì được đánh giá theo chuỗi.
Ban đầu, tôi muốn làm rõ rằng trong các hình thức văn chương của một chuỗi bất cứ điều gì là giữa đơn hoặc đôi dấu ngoặc kép được đánh giá là một đối tượng chuỗi, mà là một thể hiện của lớp của Ruby String.
Do đó, 'stackoverflow'
và "stackoverflow"
cả hai sẽ đánh giá các thể hiện của lớp String không có sự khác biệt nào cả .
Sự khác biệt
Sự khác biệt cơ bản giữa hai dạng chuỗi theo nghĩa đen (dấu ngoặc đơn hoặc dấu ngoặc kép) là dấu ngoặc kép cho phép thoát chuỗi trong khi dấu ngoặc đơn thì không!
Một chuỗi ký tự được tạo bởi các dấu ngoặc đơn không hỗ trợ xen kẽ chuỗi và không thoát khỏi chuỗi.
Một ví dụ gọn gàng là:
"\n" # will be interpreted as a new line
trong khi
'\n' # will display the actual escape sequence to the user
Nội suy với dấu ngoặc đơn hoàn toàn không hoạt động:
'#{Time.now}'
=> "\#{Time.now}" # which is not what you want..
Thực hành tốt nhất
Vì hầu hết các Ruby Linters đề nghị sử dụng các trích dẫn đơn cho các chuỗi của bạn và sử dụng các chuỗi kép trong trường hợp nội suy / thoát chuỗi.