Tôi đã tìm thấy khối mã này trên Wikipedia như là một ví dụ về một quine (chương trình tự in) trong Ruby.Hiểu ruby quine
puts <<2*2,2
puts <<2*2,2
2
Tuy nhiên, tôi không hiểu cách hoạt động. Đặc biệt, những gì tôi không nhận được là khi tôi xóa dòng cuối cùng, tôi nhận được lỗi này:
syntax error, unexpected $end, expecting tSTRING_CONTENT or tSTRING_DBEG or tSTRING_DVAR or tSTRING_END
Điều gì xảy ra trong các dòng đó?
Nhưng nếu điểm cuối của chuỗi là "cái gì đó" sau '< <', không phải là trình tự' 2 * 2,2', và trình tự tương tự được sử dụng trong dòng cuối cùng để kết thúc nó? – SasQ
Ưu tiên của '<<' chặt hơn '*', vì vậy '<< 2 * 2' là" chuỗi được biểu diễn bằng tài liệu 2 chấm dứt sau đây, nhân với 2 "thay vì" chuỗi được biểu thị bằng các ký tự sau 2 * 2 chấm dứt tài liệu ở đây. " –