2010-07-20 29 views
8

Trong PHP, sau đây sẽ cho phép tôi để tạo ra một chuỗi mà không cần phải thoát khỏi dấu ngoặc kép ..Có tương đương <<< EOD trong Ruby/Rails không?

$string = <<<EOD 

',. whatever <"",' 

EOD; 

echo $string; 

Có bất cứ điều gì tương tự như nó trong Ruby/Rails?

Trả lời

11

Ruby là khá nhiều giống nhau, với những thay đổi nhỏ, và họ đến trong 2 hương vị:

1) End-of-heredoc phải ở bắt đầu một dòng:

string = <<EOD 

    ',. whatever <"",' 

EOD 

puts string 

2) End-of-heredoc chưa preceeded bởi khoảng trắng:

string = <<-EOD 

    ',. whatever <"",' 

     EOD 

puts string 
3

Nó được gọi là heredoc, và nó là <<WHATEVER trong Ruby.

10

Đây được gọi là here doc. Từ liên kết, cách ruby ​​sẽ là:

puts <<-GROCERY_LIST 
Grocery list 
------------ 
1. Salad mix. 
2. Strawberries.* 
3. Cereal. 
4. Milk.* 

* Organic 
GROCERY_LIST 

Kết quả:

$ ruby grocery-list.rb 
Grocery list 
------------ 
1. Salad mix. 
2. Strawberries.* 
3. Cereal. 
4. Milk.* 

* Organic 
10

của Ruby hỗ trợ chuỗi multiline bằng cách cung cấp hai loại cú pháp doc đây. Cú pháp đầu tiên sử dụng và dấu gạch ngang bổ sung, nhưng cho phép bạn thụt lề dấu phân tách "kết thúc ở đây" ('eos' trong ví dụ).

<<-eos 
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor 
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud 
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute 
irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia 
deserunt mollit anim id est laborum. 

eos 

Một đây cú pháp tài liệu không yêu cầu bạn phải sử dụng dấu gạch ngang, nhưng nó đòi hỏi rằng "kết thúc ở đây doc" delimiter là trong cột 1 (hoặc không có dấu cách đứng trước nó).

heredocs
<<eos 

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor 
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud 
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute 
irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia 
deserunt mollit anim id est laborum. 
eos 
2

bạn có thể làm điều đó như

này
string = <<EOD 

',. whatever <"",' 

EOD 

puts string 
1
output = <<-TEXT 
    my text 
    block 
TEXT 

^những gì họ nói

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