Chương trình Ruby đầu tiên
Trước hết hãy khởi động trình sửa mã SciTE (bạn có thể tìm thấy nó trong Start menu sau khi cài đặt). Nhấn F8 để hiển thị khung duyệt kết quả (output frame).
Vào menu Options -> Open Global Options File và tìm dòng có chứa tabsize. Sửa thành tabsize=2 và indent.size=2. Để cửa sổ SciTE khi được mở tự động chiếm toàn bộ màn hình, sửa position.width=-1 và position.height=-1. Nhấn đồng thời Ctrl+S để save và Ctrl+W để thoát.
Tiếp theo nhấn đồng thời Ctrl+Shift+I để mở cửa sổ Indentation Settings. Trong cửa sổ này, kiểm tra lại tùy chọn Tab Size được đưa về 2 và hộp chọn Use tabs bị tắt. Click OK. Giờ ta sẽ bắt tay vào viết chương trình Ruby đầu tiên!
Tạo một thư mục riêng để chứa các chương trình Ruby bạn sẽ soạn trong quá trình dùng tài liệu này, trong trường hợp của tôi, tôi tạo thư mục “rubyprograms” ở ngoài ổ C.
Chương trình đầu tiên sẽ cho hiện dòng chữ “Hello” trên cửa sổ lệnh, và tên file chương trình sẽ là p001hello.rb
Tất cả các file mã Ruby đều có đuôi .rb . Theo quy ước, tên file hoặc thư mục là tên của lớp hoặc module với đuôi .rb và viết thường. Ví dụ lớp Foo sẽ có tên file là foo.rb
Trong khung bên trái của SciTE, gõ vào dòng mã sau:
puts ‘Hello’
rồi click File -> Save As. Nhập tên file là p001hello.rb rồi lưu vào thư mục mà bạn vừa tạo mới ở trên.
Nhấn F5 để chạy chương trình. Kết quả sẽ hiện ra như dưới đây:
>ruby p001hello.rb Hello >Exit code: 0
Lưu ý: trong Ruby, chương trình thường được chạy theo trình tự từ trên xuống dưới. puts (s nghĩa là string – chuỗi) đơn giản có nghĩa là “đặt” lên màn hình chuỗi đi kèm theo sau nó, và sau đó con trỏ được đưa xuống dòng tiếp theo.
a. Dấu ngoặc đơn không bắt buộc khi gọi một phương thức. Tất cả các cách gọi sau là hợp lệ:
foobar
foobar()
foobar(a,b,c)
foobar a, b, c
b. Trong Ruby, mọi thứ, từ số nguyên đến chuỗi đều được coi là một “đối tượng”. Và mỗi đối tượng khi sinh ra đều có các “phương thức” (một cách gọi khác của hàm và thủ tục). Các phương thức này được sử dụng với các chức năng khác nhau. Để dùng một phương thức bạn cần kèm theo sau tên của đối tượng một dấu chấm, sau đó đến tên phương thức và các thông số. Ví dụ:
foo.somemethod(param1, param2)
Một số phương thức như puts và gets không cần phải đi kèm với tên của một đối tượng nhất định. Sở dĩ như vậy là vì những phương thức này nằm trong module Kernel (lõi) của Ruby (phần này sẽ nói sau). Module Kernel này lại được đính vào lớp Object (bất kì đối tượng nào trong Ruby đều thừa kế từ lớp Object). Do đó tất cả các đối tượng trong Ruby đều có những phương thức của Kernel. Khi bạn chạy một chương trình Ruby, luôn có một đối tượng tên là “main” thuộc lớp Object được tự động tạo ra. Đối tượng này có vai trò dẫn truy nhập đến các phương thức của Kernel.
Bạn có thể kiểm chứng điều đó bằng đoạn mã sau (bạn chưa cần phải hiểu hết ý nghĩa của nó, cứ thử đi đã)
puts ‘I am an object of class = ‘ + self.class.to_s puts 'I am an object = ' + self.to_s print 'The object methods are = ' puts self.private_methods.sort
Sau đó bạn có thể kiểm chứng là ba dòng mã này cho kết quả như nhau:
Kernel.puts ‘Hello’ self.puts ‘Hello’ puts ‘Hello’
Quan sát
a. Đối với lập trình viên C và Java – không cần thiết phải có hàm/phương thức chính
b. Một chuỗi được định nghĩa bằng một tập hợp các kí tự nằm giữa hai dấu ngoặc đơn hoặc ngoặc kép. Trong ví dụ trên, ngoặc đơn được sử dụng để định nghĩa Hello. Trên thực tế ngoặc đơn hiệu quả hơn ngoặc kép (sẽ bàn thêm ở phần sau).
c. Ruby là ngôn ngữ phiên dịch, do đó bạn không cần phải dịch lại chương trình để chạy.
d. Các bản Ruby với chữ số phiên bản phụ là số chẵn (1.6, 1.8 .v.v.) là các bản ổn định.
e. Khi gọi các phương thức, bạn có thể bỏ thành phần self. được.
chuanghira said,
đoạn mã thứ 2 từ dưới lên của bạn nhầm dấu hay cố tình viết như vậy ?
admin said,
Thực ra thì không nhầm dấu đâu bạn. Ý bạn nói dòng đầu tiên phải không? Trông thì giống dấu huyền `, nhưng thực ra là dấu ngoặc nhỏ. Có lẽ bộ lọc code nó hơi có vấn đề 1 tẹo ![]()
BlueC said,
Hi,
Bạn có thể giới thiệu vài project hay trang web của công ty nào đó được viết bằng Ruby hay RoR được không? Mình muốn xem qua bộ mặt của nó cũng như những ai thích sử dụng nó.
Mình mới tập tành học Ruby, có gì mong nhận được sự giúp đỡ.
これからお世話になります。
BlueC
ForAdNow said,
Hi,
Thanks for translate.
hichirstopher said,
sao đọan code thứ2 từ dưới đếm lên nó báo lỗi dòng 1 nhỉ bạn ơi
1. puts ‘I am an object of class = ‘ + self.class.to_s
p001hello.rb:1: private method `puts’ called for 1:Fixnum (NoMethodError)
c40 said,
@BlueC: Một trong những App nổi tiếng nhất mà tớ biết được viết trên Rails là Twitter.com. Tuy nhiên hiện nay nó đang gặp phải một số vấn đề về scaling và có tin đồn là sẽ không sử dụng rails nữa. Basecamp cũng là một ví dụ về web app sử dụng Rails, và không (hoặc chưa) gặp phải vấn đề gì về scaling cả.
Các phần mềm viết bằng Ruby thì không phải là phổ biến cho lắm, cậu có thể tìm hiểu thêm về các project nguồn mở viết bằng Ruby tại http://www.rubyforge.org .
@hichirstopher: sau puts là dấu ngoặc nhỏ cậu ạ, chứ ko phải backtick. Có lẽ lúc tớ soạn cái này dùng trình soạn thảo vớ vỉn nào đó nên tất cả các dấu ngoặc nhỏ, ngoặc kép .v.v. đều bị chuyển đổi lung tung hết cả. Sorry nhé
puts ‘I am an object of class = ‘ + self.class.to_s
n_leminh said,
cac ban co the vao trag http://www.yup.vn day la trg web viet = ror do
RSS feed for comments on this post · TrackBack URI