This page is READ-ONLY. It is generated from the old site.
All timestamps are relative to 2013 (when this page is generated).
If you are looking for TeX support, please go to VietTUG.org

goodbye... ruby :)

vãi ~
Added by about 3 years ago  »  Votes: 3/3

Đoạn mã sau đây cho ta một ví dụ rất buồn cười về while trong ngôn ngữ Ruby.

1 puts "Hello, world." while false
2 
3 begin
4   puts "Goodbye, Ruby." 
5 end while false

Ý định của người thiết kế các dòng mã trên là, khi thi hành, hai đoạn mã đó không in ra gì cả. Dòng đầu tiên tương tự như ba dòng cuối cùng, nhưng trong phần sau sử dụng block thay vì một method thông thường.

Kết quả thực tế thế nào? Dòng đầu tiên không in ra gì, còn phần cuối lại in ra Goodbye, Ruby. ;)

Tại sao? Một sự mâu thuẫn của Ruby?

Ghi chú 1: Ví dụ trên được ghi lại theo trí nhớ sau khi mình đọc một bài rất hay về các ngôn ngữ lập trình.

Tác giả của bài viết không đề cập chi tiết hơn; tuy nhiên, theo mình nhớ thì việc dùng while (và if,...) phía sau block là học từ ngôn ngữ Perl; và cách này không được khuyến khích. Ba dòng cuối nên được viết lại như sau

1 while false
2   puts "Goodbye, Ruby." 
3 end

Và lúc này, kết quả thực tế đúng với ý đồ thiết kế mã.

Ghi chú 2: Nếu thay while bởi if thì không có gì đặc biệt xảy ra


Comments