Đến với Ruby từ Perl
Perl thật tuyệt vời. Tài liệu của Perl thật tuyệt vời. Cộng đồng Perl cũng… tuyệt vời. Đối với những lập trình viên Perl khao khát các tính năng OO thanh lịch được tích hợp sẵn ngay từ đầu, Ruby có thể dành cho bạn.
Điểm tương đồng
Giống như Perl, trong Ruby,…
- Bạn có một hệ thống quản lý gói, hơi giống CPAN (được gọi là RubyGems).
- Regex được tích hợp sẵn. Bon appétit!
- Có một số lượng khá lớn các hàm tích hợp thường dùng.
- Dấu ngoặc đơn thường là tùy chọn.
- Chuỗi hoạt động cơ bản giống nhau.
- Có cú pháp phân cách chuỗi và regex tổng quát tương tự như Perl.
Nó trông như
%q{this}(ngoặc đơn), hoặc%Q{this}(ngoặc kép), và%w{this for a single-quoted list of words}. Bạn%Q|can|%Q(use)%Q^other^dấu phân cách nếu muốn. - Bạn có nội suy biến trong ngoặc kép, mặc dù nó
"looks #{like} this"(và bạn có thể đặt bất kỳ mã Ruby nào bên trong#{}). - Mở rộng lệnh shell sử dụng
`backticks`. - Bạn có các công cụ tài liệu tích hợp (của Ruby gọi là rdoc).
Khác biệt
Không giống Perl, trong Ruby,…
- Bạn không có các quy tắc phụ thuộc ngữ cảnh như với Perl.
- Một biến không giống với đối tượng mà nó tham chiếu đến. Thay vào đó, nó luôn chỉ là một tham chiếu đến một đối tượng.
- Mặc dù
$và@đôi khi được sử dụng làm ký tự đầu tiên trong tên biến, thay vì chỉ định kiểu, chúng chỉ định phạm vi ($cho biến toàn cục,@cho instance của đối tượng, và@@cho thuộc tính lớp). - Mảng được đặt trong ngoặc vuông thay vì ngoặc đơn.
- Kết hợp danh sách từ các danh sách khác không làm phẳng chúng thành một danh sách lớn. Thay vào đó, bạn nhận được một mảng chứa các mảng.
- Sử dụng
defthay vìsub. - Không cần dấu chấm phẩy ở cuối mỗi dòng. Nhân tiện,
bạn kết thúc các thứ như định nghĩa hàm, định nghĩa lớp, và câu lệnh
case bằng từ khóa
end. - Các đối tượng được định kiểu mạnh. Bạn sẽ phải gọi
foo.to_i,foo.to_s, v.v. một cách thủ công nếu cần chuyển đổi giữa các kiểu. - Không có
eq,ne,lt,gt,ge, hayle. - Không có toán tử kim cương (
<>). Bạn thường sử dụngIO.some_methodthay thế. - Dấu phẩy béo
=>chỉ được sử dụng cho hash literal. - Không có
undef. Trong Ruby bạn cónil.nillà một đối tượng (giống như mọi thứ khác trong Ruby). Nó không giống với một biến chưa được định nghĩa. Nó được đánh giá làfalsenếu bạn coi nó như boolean. - Khi kiểm tra giá trị thật, chỉ
falsevànilđược đánh giá là giá trị false. Mọi thứ khác là true (bao gồm0,0.0, và"0"). - Không có PerlMonks. Tuy nhiên mailing list ruby-talk là một nơi rất hữu ích.