Article:
Here document trong Ruby
947
akia.myopenid.com 6Updated over 3 years ago |
Trong Ruby, có kiểu định nghĩa chuỗi nhiều dòng rất hay, thường được gọi là “here document”.
1. Nếu bạn học Ruby rồi mà chưa biết về here document (hoặc giả sử biết rồi nhưng quên như sb) thì có thể bạn viết thế này:
str = "Một dòng chữ \n" +
"Một dòng khác \n" +
"Và một dòng nữa"
thì output sẽ là:
Một dòng chữ
Một dòng khác
Và một dòng nữa
2. Nếu bạn đã dùng here document rồi hoặc sau khi đọc xong bài này, bạn sẽ không viết code như thế. Chắc chắn! Bạn sẽ viết thế này:
str = <<END_OF_STRINGMột dòng chữEND_OF_STRING
Một dòng khác
Và một dòng nữa
Không phải hoa mắt vì đám double quote (“) và đống dấu cộng (+) mà vẫn hoàn toàn yên tâm rằng output không khác gì trên ^^
3. Advanced:
a. Chuỗi END_OF_STRING là do bạn chọn. Bạn có thể đặt là EOS, ABC, DEF, VAP, ... không sao hết. Chẳng hạn:
str = <<EOSMột dòng chữEOS
Một dòng khác
Và một dòng nữa
b. Dynamic content
Xem ví dụ không hiểu chết liền:
name = 'Joe'
str = <<EOS
Tớ là #{name}
EOS
c. Indent
Trong các ví dụ trên tag đóng END_OF_STRING và EOS luôn luôn phải nằm đầu dòng, không được có khoảng trống ở bên trái, và như vậy sẽ rất bất tiện đối với bạn. Không sao, bạn có thể làm như sau:
str = <<-EOSMột dòng chữEOS
Một dòng khác
Và một dòng nữa
Bạn nhìn kỹ sẽ thấy trước tag mở EOS có thêm dấu trừ (-)
Chúc vui vẻ với here document!
Bạn có thể xem thêm thông tin ở đây:
1 2 
here document, ruby căn bản, string
6
over 3 years ago