1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu ngôn ngữ lập trình Ruby

39 1,8K 11

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 39
Dung lượng 302,5 KB

Nội dung

Ruby là ngôn ngữ lập trình hoàn toàn hướng đối tượng. Mọi giá trị đếu là một đối tượng, thậm chí ngay cả những chuối số và các giá trị true, false, và nil (nil là một giá trị đặc biệt biểu thị sự không có giá trị; đó là một phiên bản của null trong Ruby). Trong ví dụ dưới ta sẽ gọi một phương thức có tên là class của các giá trị này.

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ***************** BÀI TẬP LỚN MÔN NGUYÊN LÝ CÁC NGÔN NGỮ LẬP TRÌNH ĐỀ TÀI: TÌM HIỂU VỀ RUBY Bài tập lớn Nguyên lý các ngôn ngữ lập trình – Tìm hiểu về Ruby Mục lục Chương I: Giới thiệu 4 1. Tổng quát vể Ruby 4 1.1. Ruby là ngôn ngữ lập trình hướng đối tượng 4 1.2. Block và Iterator 4 1.3. Các biểu thức và toán tử trong Ruby 6 1.4. Các phương thức 7 1.5. Phép gán 8 1.6. Các dấu tiền tố và hậu tố 9 1.7. Regexp và Range 9 1.8. Lớp và Module 9 1.9. Những điều mới lạ trong Ruby 12 2. Sử dụug Ruby 13 2.1. Trình thông dịch Ruby 13 2.2. Hiển thị dữ liệu ra 13 2.3. Tương tác Ruby với irb 14 Chương II: Cấu trúc và sự thực thi các chương trình Ruby 15 1. Cấu trúc từ vựng 15 1.1. Chú giải 15 1.2. Literal 15 1.3. Dấu câu 15 1.4. Định danh 16 1.5. Từ khoá 16 2. Cấu trúc cú pháp 17 3. Thực thi chương trình 17 Chương III: Kiểu dữ liệu và đối tượng 19 1. Số 19 2. Xâu 20 3. Các kiểu dữ liệu khác 20 4. Đối tượng 21 4.1. Các tham chiếu đối tượng: 21 4.2. Vòng đời của đối tượng 21 4.3. Định danh đối tượng 22 4.4. Lớp đối tượng và kiểu đối tượng 22 4.5. Sao chép đối tượng 24 Chương IV: Phương thức, Proc, Lambda, và Closure 25 1. Định nghĩa phương thức đơn giản 25 1.1. Giá trị trả về của phương thức 26 1.2. Phương thức và xử lý lỗi 26 1.3. Gọi một phương thức của một đối tượng 26 2. Proc và Lambda 26 2.1. Tạo Proc 27 2.2. Gọi Proc và Lambda 30 3. Closure 30 3.1. Closure và các biến chung 31 2 Bài tập lớn Nguyên lý các ngôn ngữ lập trình – Tìm hiểu về Ruby 3.2. Closure và Binding 32 Chương V: Lớp và Module 33 1. Tra cứu phương thức 33 2. Tra cứu phương thức của lớp 35 3. Tra cứu hằng số 36 Tài liệu tham khảo 39 3 Bài tập lớn Nguyên lý các ngôn ngữ lập trình – Tìm hiểu về Ruby Chương I: Giới thiệu 1. Tổng quát vể Ruby 1.1. Ruby là ngôn ngữ lập trình hướng đối tượng Ruby là ngôn ngữ lập trình hoàn toàn hướng đối tượng. Mọi giá trị đếu là một đối tượng, thậm chí ngay cả những chuối số và các giá trị true, false, và nil (nil là một giá trị đặc biệt biểu thị sự không có giá trị; đó là một phiên bản của null trong Ruby). Trong ví dụ dưới ta sẽ gọi một phương thức có tên là class của các giá trị này. Chú giải trong Ruby bắt đầu bằng #, và mũi tên => trong chú giải thể hiện giá trị trả về bởi dòng lệnh: 1.class # => Fixnum: số 1 là một Fixnum 0.0.class # => Float: các số thực có lớp Float true.class # => TrueClass: true là một thể hiện duy nhất (singleton) của # TrueClass false.class # => FalseCalss nil.class # => NilClass Trong nhiều ngôn ngữ, lời gọi hàm và phương thức phải có dấu ngoặc đơn, nhưng trong đoạn code trên không có một dấu ngoặc đơn nào. Trong Ruby, cấu ngoặc đơn là mặc định và chúng thường được bỏ qua, đặc biệt khi phương thức không nhận một tham số nào. Việc dấu ngoặc đơn bị bỏ qua trong lời gọi phương thức làm chúng giống như là các tham chiếu tới các trường hoặc biến của đối tượng. Điều này là có chủ ý, nhưng sự thật là, Ruby rất khắt khe trong việc đóng gói các đối tượng; sẽ không có sự truy cập nào đối với trạng thái bên trong của một đối tượng từ một đối tượng bên ngoài. Những sự truy cập như vậy phải được thực hiện gián tiếp qua một phương thực truy cập, nhưng là phương thức class ở trên. 1.2. Block và Iterator Việc chúng ta có thể gọi các phương thức của các số nguyên chỉ là một mặt của Ruby. Còn có một vài mặt khác mà lập trình viên Ruby hay sử dụng: 3.times {print “Ruby! ”} # In ra “Ruby! Ruby! Ruby! ” 1.upto(9) {|x| print x} # In ra “123456789” times và upto là các phương thức của đối tượng số nguyên. Chúng là một loại phương thức đặc biệt gọi là iterator, và chúng thực hiện giống các vòng lặp. Đoạn code trong các dấu ngoặc nhọn – gọi là một block – kết hợp với lời gọi phương thức và được thực hiện trong vòng lặp. Sử dụng các iterator và block là một đặc 4 Bài tập lớn Nguyên lý các ngôn ngữ lập trình – Tìm hiểu về Ruby tính đáng chú ý của Ruby; mặc dù ngôn ngữ có vòng lặp while, thì thường người lập trình sử dụng các vòng lăp với các khởi tạo thực chất là các lời gọi phương thức. Số nguyên không phải là các giá trị duy nhất có các phương thức iterator. Mảng (và các đối tượng “đếm được” tương tự) định nghĩa một iterator bằng each, phương thức gọi block tương ứng cho mỗi phần tử trong mảng. Mỗi lời gọi block đi qua một phần tử của mảng: a = [3, 2, 1] # Đây là một mảng a[3] = a[2] -1 # Sử dụng dấu ngoặc vuông để lấy và gán giá trị cho phần tử # mảng a.each do |elt| # each là một iterator. Block có một tham số elt print elt+1 # In “4321” end # Block này được nằm trong trong do/end # thay vì {} Có rất nhiều cách sử dụng iterator hữu ích khác: a = [1, 2, 3, 4] # Khởi tạo một mảng b = a.map{|x| x*x} # Bình phương các phần tử: b là # [1,4,9,16] c = a.select {|x| x%2==0} # Chọn các phần tử chẵn: c là # [2,4] a.inject do |sum, x| # Tính tổng của các phần tử => 10 sum + x end Bảng băm, giống như mảng, là một cấu trúc dữ liệu cơ bản của Ruby. Như tên gọi, chúng dựa trên cấu trúc dữ liệu bảng băm để ánh xạ từ các đối tượng khoá duy nhất tới các đối tượng giá trị. Bảng băm sử dụng dấu ngoặc vuông, giống như mảng, để lấy và gán các giá trị. Thay vị sử dụng số nguyên để làm chỉ mục, chúng sử dụng các đối tượng khoá trong các dấu ngoặc vuông. Giống lớp Array, lớp Hash cũng định nghĩa một phương thức iterator là each. Phương thức này gọi các block code tương ứng cho mỗi cặp khoá-giá trị trong bảng băm, và (đây là điểm khác với Array) truyền các khoá và giá trị như là tham số cho block: h = { # Một bảng băm ánh xạ từ tên đến các chữ số :one => 1, # “Mũi tên” thể hiện sự ánh xạ key=>value :two => 2 # Dấu phẩy thể hiện các Symbol } h[:one] # => 1. Lấy một giá trị qua khoá h[:three] = 3 # Thêm một cặp khoá/giá trị vào bảng băm h.each do |key,value| # Duyệt qua các cặp khoá/giá trị print “#{value}:#{key}; ” # Các giá trị được thay thế bằng xâu 5 Bài tập lớn Nguyên lý các ngôn ngữ lập trình – Tìm hiểu về Ruby end # In “1:one; 2:two; 3:three; ” Bảng băm của Ruby có thể sử dụng bất kỳ đối tượng nào làm khoá, nhưng đối tượng Symbol thường được sử dụng. Symbol là các xâu không đổi. Chúng có thể được đem so sánh bởi các thực thể hơn nội dung chữ (bởi vì hai đối tượng Symbol khác nhau không bao giờ có chung nội dung). Bên cạnh đó, lưu ý rằng Hash.each ở ví dụ trên bao gồm đoạn code: print “#{value}:#{key}; ” Xâu trong dấu ngoặc kép có thể bao gồm các biểu thức phân cách bởi #{ và }. Giá trị của biểu thức trong các dấu phân cách được chuyển thành xâu (bằng lời gọi phương thức to_s mà mọi đối tượng đều có). Xâu kết quả sau đó được sử dụng thay thế cho đoạn xâu biểu thức và các dấu phân cách trong xâu. Sự thay thế các giá trị biểu thức trong xâu này thường được gọi là phép nội suy xâu. 1.3. Các biểu thức và toán tử trong Ruby Cú pháp của Ruby là hướng biểu thức. Các cấu trúc điều khiển như if mà được gọi là các câu lệnh trong các ngôn ngữ khác thực chất là các biểu thức trong Ruby. Chúng có các giá trị giống như các biểu thức đơn giản hơn có, và chúng ta có thể viết code như sau: minimum = if x < y then x else y end Mặc dù tất cả các “câu lệnh” trong Ruby thực chất đều là các biểu thức, không phải lúc nào chúng cũng trả về giá trị có nghĩa. Ví dụ, vòng lặp while và các định nghĩa phương thức là các biểu thức mà bình thường sẽ trả về giá trị nil. Giống như trong hầu hết các ngôn ngữ, các biểu thức trong Ruby được xây dựng từ các giá trị và các toán tử. Hầu hết, các toán tử của Ruby là quen thuộc với những người biết C, Java, JavaScript, hoặc bất kỳ ngôn ngữ lập trình tương tự nào. Sau đây là các ví dụ đơn giản và khác thường của toán tử trong Ruby: 1 + 2 # => 3: phép cộng 1 * 2 # => 2: phép nhân 1 + 2 == 3 # => true: phép kiểm tra tính bằng 2 ** 1024 # => 2 mũ 1024 “Ruby” + “ rocks!” # => “Ruby rocks!”: phép ghép xâu “Ruby! ” * 3 # => “Ruby! Ruby! Ruby!”: phép lặp xâu “%d %s” % [3, “rubies”] # => “3 Rubies”: định dạng in, theo kiểu Python max = x > y > x : y # Toán tử điều kiện Nhiều toán tử của Ruby được sử dụng như các phương thức, các lớp có thể định nghĩa (hoặc định nghĩa lại) các phương thức này nếu như chúng muốn. (Tuy nhiên, chúng không thể định nghĩa một toán tử hoàn toàn mới; chỉ có một tập cố 6 Bài tập lớn Nguyên lý các ngôn ngữ lập trình – Tìm hiểu về Ruby định các toán tử được thừa nhận). Theo ví dụ, ta lưu ý là các toán tử + và * thực hiện với các số nguyên và xâu là khác nhau. Ta có thể định nghĩa các toán tử này theo cách nào ta muốn trong lớp của mình. Toán tử << là một ví dụ hay. Các lớp số nguyên Fixnum và Bignum sử dụng các toán tử này cho phép dịch bit trái, giống ngôn ngữ lập trình C. Bên cạnh đó (giống C++), các lớp khác – như xâu, mảng và luồng – sử dụng toán tử này cho các phép nối thêm vào. Nếu ta tạo một lớp mới có thể có giá trị thêm vào nó theo một vài cách nào đấy, định nghĩa << là một ý hay. Một trong những toán tử hữu ích nhất được chồng là []. Các lớp Array và Hashes sử dụng toán tử này để truy cập đến các phẩn tử trong mảng qua chỉ số và các giá trị qua khoá. Nhưng ta có thể định nghĩa [] trong lớp của minh theo mục đích mình muốn. Ta thậm chí định nghĩa nó là một phương thức sử dụng nhiều tham số, phân cách bởi các dấu phẩy trong dấu ngoặc vuông. (Lớp Array chấp nhận một chỉ số và một độ dài giữa dấu ngoặc vuông để thể hiện mảng con hoặc “lớp” của mảng). Và nếu ta muốn cho phép các dấu ngoặc vuông được sử dụng bên trái các phép gán, ta có thể định nghĩa toán tử []= tương ứng. Giá trị ở bên trái phép gán sẽ được truyền như là tham số cuối cùng cho phương thức mà thực hiện toán tử đấy. 1.4. Các phương thức Các phương thức được định nghĩa với từ khoá def. Giá trị trả về của một phương thức là giá trị cuối cùng của biều thức trong thân của nó: def square(x) # Định nghĩa một phương thức tên là square với tham số x x*x # Trả về bình phương của x end # Kết thúc phương thức Khi một phương thức, như ở trên, được định nghĩa ngoài một lớp hoặc một module, thì nó là một hàm toàn cục hơn là một phương thức của một đối tượng. (Tuy nhiên, về mặt kỹ thuật, một phương thức giống như thế trở thành một phương thức private của lớp Object.) Các phương thức có thể cũng được định nghĩa trong các đối tượng riêng biết bằng việc thêm vào đầu tên của phương thức đối tượng mà có phương thức đó. Các phương thức như thế được gọi là các phương thức singleton, và chúng là cách Ruby định nghĩa các phương thức lớp: def Math.square(x) # Định nghĩa một phương thức lớp của module Math x*x end Module Math là một phần của thư viện Ruby, và đoạn code này thêm vào một phương thức mới cho nó. Đây là đặc điểm quan trọng của Ruby – các lớp và module là “mở” và có thể được thay đổi và mở rộng trong lúc chạy. 7 Bài tập lớn Nguyên lý các ngôn ngữ lập trình – Tìm hiểu về Ruby Các tham số của phương thức có thể có giá trị mặc định cụ thể, và các phương thức có thể nhận một số số cố định các tham số. 1.5. Phép gán Phép gán = (không thể chồng được) trong Ruby sẽ gán một giá trị vào một biến: x = 1 Phép gán có thể kết hơp với các toán tử khác như + và -: x += 1 # Tăng x lên 1: lưu ý là Ruby không có ++. y -= 1 # Giảm y đi 1: và cũng không có Ruby hỗ trợ phép gán song song, cho phép nhiều hơn một giá trị và nhiều hơn một biến trong các biểu thức gán: x, y = 1, 2 # Tương tự như x = 1; y =2 a, b = b, a # Hoán đổi giá trị của hai biến x, y, z = [1,2,3] # Các phần tử của mảng được gán giá trị một cách tự động Các phương thức trong Ruby được phép trả về hơn một giá trị, và phép gán song song là một sự kết hợp hữu ích với các phương thức này. Ví dụ : # Định nghĩa một phương thức để chuyển hệ toạ độ Cartesian(x,y) thành Polar def polar(x,y) theta = Math.atan2(y,x) # Tính góc r = Math.hypot(x,y) # Tính khoảng cách [r, theta] # Biểu thức cuối cùng là giá trị trả về end # Đây là cách ta sử dụng phương thức này với phép gán song song distance, angle = polar(2,2) Các phương thức kết thúc bởi một bằng (=) là đặc biệt bởi Ruby cho phép chúng được gọi bằng cách sử dụng cú pháp gán. Nếu một đối tượng o có một phương thức x=, thì hai dòng code sau thực hiện cùng một việc: o.x=(1) # Cú pháp gọi phương thức bình thường o.x = 1 # Lời gọi phương thức thông qua phép gán 8 Bài tập lớn Nguyên lý các ngôn ngữ lập trình – Tìm hiểu về Ruby 1.6. Các dấu tiền tố và hậu tố Ta đã thấy các phương thức có tên kết thúc bằng = có thể được gọi bằng biểu thức gán. Các phương thức Ruby cũng có thể kết thúc bằng dấu hỏi hoặc dấu chấm than. Dấu hỏi được sử dụng để đánh dấu một xác nhận – các phương thức trả về giá trị Boolean. Ví dụ, các lớp Array và Hash đểu có phương thức tên là empty? để kiểm tra cấu trúc dữ liệu đó có phần tử nào hay không. Dấu chấm than ở cuối tên phương thức được dùng để biểu thị sự thận trọng khi sử dụng phương thức đó. Một số số các lớp nòng cốt của Ruby định nghĩa các cặp phương thức có cùng tên, ngoại trừ một phương thức có dấu chấm than ở cuối và phương thức còn lại thì không. Thông thường, phương thức không có dấu chấm than trả về bản sao đã thay đổi của đối tượng gọi nó, và phương thức có dấu chấm than là phương thức làm thay đổi chính đối tượng. Ví dụ, lớp Array định nghĩa các phương thức sort và sort !. Ngoài các ký tự dấu câu ở cuối các tên phương thức, ta còn thấy các ký tự dấu câu còn xuất hiện ở đầu tên các biến của Ruby: biến toàn cục được bắt đầu bằng $, các biến tham chiếu bắt đầu bằng @, và các biến của lớp được bắt đầu bằng @@. Các tiền tố này có thể mất một thời gian để quen dùng, nhưng nhờ nó bạn sẽ biết được phạm vi của biến. Các tiền tố là bắt buộc để không bị nhập nhằng với cú pháp rất uyển chuyển của Ruby. Một cách để nói về công dụng của các tiền tố trong tên biến là giúp ta có thể bỏ qua các dấu ngoặc trong các lời gọi hàm. 1.7. Regexp và Range Ta đã nói về mảng và bảng băm như là các cấu trúc đối tượng cơ bản của Ruby. Ta cũng đã mô cách sử dụng của số và xâu. Có hai loại dữ liệu khác cũng rất đáng để nói đến ở đây. Một đối tượng Regexp (biểu thức chính quy) môt tả một định dạng xâu và có các phương thức để xác định một xâu đầu vào có hợp với định dạng đó hay không. Và một đối tượng Range biểu diễn các giá trị (thường là số) giữa hai đầu mút. Các biểu thức chính quy và các đoạn có cú pháp riêng : /[Rr]uby/ # Khớp "Ruby" hoặc “ruby” /\d{5}/ # Khớp 5 chữ số liên tiếp 1 3 # Tất cả x trong đoạn 1 <= x <= 3 1…3 # Tất cả x trong đoạn 1 <= x < 3 Các đối tượng Regexp và Range định nghĩa toán tử == thông thường để kiểm tra tính bằng nhau. Ngoài ra chúng cũng định nghĩa toán tử == để kiểm tra tính so khớp và sự có mặt. Cấu trúc case của Ruby (giống như switch trong C hoặc Java) kiểm tra các biểu thức của nó vói từng trường hợp bằng cách sử dụng ==, vì thế toán tử này thường được gọi là toán tử kiểm tra bằng trường hợp. 1.8. Lớp và Module Lớp là một tập hợp các phương thức liên quan thực hiện trên trạng thái của một đối tượng. Trạng thái của một đối tượng được xác định bằng các biến của nó: 9 Bài tập lớn Nguyên lý các ngôn ngữ lập trình – Tìm hiểu về Ruby các biến có thể bắt đầu bằng @ và có giá trị xác định riêng cho đối tượng cụ thể. Đoạn code sau định nghĩa một lớp tên là Sequence và mô tả cách viết một phương thức duyệt và định nghĩa các toán tử: # Lớp dưới đây mô tả một chuỗi các số được xác định bởi bat ham số from, to và # by. Các số x trong chuỗi thoả mãn hai tính chất sau: # # from <= x <= to # x = from + n*by, với n là một số nguyên # class Sequence # Đây là lớp có thể liệt kê đựơc, nó định nghĩa từ iterator ở dưới include Enumerable # Tham chiếu các phương thức của module này trong lớp # Phương thức khởi tạo rất đặc biệt; nó được gọi một cách tự động để khởi tạo # một thể hiện mới được tạo của lớp def initialize(from, to, by) # Lưu giữ các tham số vào trong các biến để sử dụng sau này @from, @to, @by = from, to, by # Lưu ý đến phép gán song song và tiền # tố End # Đây là iterator đòi hỏi bởi module Enumerable def each x = @from # Bắt đầu từ điểm đầu tiên while x <= @to # Đến khi chúng ta vẫn chưa đến điểm cuối cùng yield x # Truyền x cho block tương ứng với iterator x += @by # Tăng x lên end end # Định nghĩa phương thức length (giống như mảng) trả về số lượng giá trị trong # chuỗi def length return 0 if @from > @to Integer((@to-@from)/@by) + 1 # Tính và trả về độ dài của chuỗi End # Định nghĩa một tên khác cho cùng phương thức. # Trong Ruby việc một phương thức có nhiều tên là điều bình thường alias size length # size bây giờ đồng nghĩa với length # Chồng lại toán tử truy cập mảng để truy cập ngẫu nhiên đến chuỗi def[](index) return nil if index < 0 # Trả về nil đếu chỉ số âm 10 [...]... NilClass Lưu ý rằng không có lớp Boolean nào trong Ruby TrueClass và FalseClass đều có lớp cha là Object 20 Bài tập lớn Nguyên lý các ngôn ngữ lập trình – Tìm hiểu về Ruby 4 Đối tượng Ruby là ngôn ngữ thuần đối tượng: mọi giá trị đều là các đối tượng, và không có sự khác nhau giữa các kiểu dữ liệu chính và kiểu đối tượng như các ngôn ngữ lập trình khác Trong Ruby, mọi đối tượng đều thừa kế từ một lớp tên... gây ngạc nhiên có các lập trình viên C khi họ đã quen với 0 là false, và lập trình viên Javacript coi xâu rỗng “” là false 2 Sử dụug Ruby Trước khi sử dụng Ruby, điều ta cần là một trình thông dịch Ruby, và ta cũng sẽ muốn biết cách sử dụng ba công cụ - irb, ri, và gem 2.1 Trình thông dịch Ruby Một khi ta đã cài Ruby, ta có thể gọi trình thông dịch Ruby bằng câu lệnh ruby sau: % ruby –e ‘puts “hello... irb để ta có thể sử dụng nó một cách hiệu quả khi khám phá Ruby 14 Bài tập lớn Nguyên lý các ngôn ngữ lập trình – Tìm hiểu về Ruby Chương II: Cấu trúc và sự thực thi các chương trình Ruby Phần này giải thích cấu trúc cả chương trình Ruby, bao gồm cấu trúc từ vựng, các token (ký tự đại diện)… Phần tiếp theo sẽ là cấu trúc cú pháp của chương trình Ruby, giải thích cách các biểu thức, cấu trúc điều khiển,... thức mà được gọi Quá trình này được gọi là tra cứu phương thức hoặc phân giải tên phưong thức Với biểu thức lời gọi phương thức o.m, Ruby thực hiện quá trình phân giả tên theo các bước sau: 33 Bài tập lớn Nguyên lý các ngôn ngữ lập trình – Tìm hiểu về Ruby 1 Đầu tiên, nó kiểm tra lớp đặc trưng o để tìm phương thức singleton tên m 2 Nếu không có phương thức m nào được tìm tháy, Ruby tìm trong các lớp o... ký tự xuống dòng Ví dụ, gõ chương trình có 2 dòng code dưới đây vào một trình soạn thảo và lưu nó vào một file tên là count.rb: 9.downto(1) {|n| print n} Puts “ blastoff!” # Không có dấu xuống dòng giữa các số # Kết thúc bằng dấu xuống dòng Chạy chương trình với trình thông dịch của Ruby: %ruby count.rb 13 Bài tập lớn Nguyên lý các ngôn ngữ lập trình – Tìm hiểu về Ruby Nó sẽ cho ra kết quả như sau:... thúc vòng lặp 3 Thực thi chương trình Ruby là một ngôn ngữ kịch bản (script) Điều đó có nghĩa là các chương trình Ruby chỉ đơn giản là các danh sách, hoặc các script, của các lệnh được thực hiện Theo mặc định, các lệnh này sẽ được thực hiện tuần tự, theo thứ tự chúng xuất 17 Bài tập lớn Nguyên lý các ngôn ngữ lập trình – Tìm hiểu về Ruby hiện Cấu trúc điều khiển cả Ruby sẽ làm thay đổi thứ tự thực hiện... thiện cho các lập trình viên hơn là to_s 2.3 Tương tác Ruby với irb irb (viết tắt của “interactive Ruby) là một Ruby shell Gõ một biểu thức Ruby tại dấu nhắc và nó sẽ thực hiện và hiển thị giá trị cho bạn Đây thường là cách dễ dàng nhất để thử các tính năng của ngôn ngữ mà ta đọc được từ các sách Đây là một ví dụ của irb: $ irb –simple-promt >> 2**3 => 8 >> Ruby! ” * 3 => Ruby! Ruby! Ruby! ” >> 1.upto(3){|x|... kiện hoặc lặp lại Các lập trình viên mà đã quan thuộcvới các ngôn ngữ biên dịch như C hay Java có thể sẽ gặp một số khác biệt Không có phương thức main nào trong Ruby để bắt đầu cho chương trình thực thi Trình thông dịch của Ruby được cung cấp một kịch bảng để thực hiện, và nó bắt đầu thực thi ngay từ dòng đầu tiên cho đến dòng cuối cùng Một khác biệt nữa giữa Ruby và các ngôn ngữ biên dịch liên quan... thức Kernel.binding trả về một đối tượng Binding biểu diễn sự gắn kết tuỳ theo bất cứ điểm nào mà ta gọi 32 Bài tập lớn Nguyên lý các ngôn ngữ lập trình – Tìm hiểu về Ruby Chương V: Lớp và Module Ruby là một ngôn ngữ hướng đối tượng theo nghĩa thuần khiết: một giá trị trong Ruby là (hoặc ít nhất hoạt động như) một đối tượng Mọi đối tượng đều là thể hiện của một lớp Một lớp định nghĩa một tập các phương... - Nó thực hiện một lệnh là cho chương trình Ruby dừng lại - Nó đến dòng cuối của file - Nó đọc một dòng mà có token _END_ đánh dấu là hết phần logic của file Trước khi thoát, trình thông dịch Ruby thực hiện phần thân của lệnh END mà nó gặp và bất cứ code “shutdown hook” được đăng ký bằng hàm at_exit 18 Bài tập lớn Nguyên lý các ngôn ngữ lập trình – Tìm hiểu về Ruby Chương III: Kiểu dữ liệu và đối tượng . một mặt của Ruby. Còn có một vài mặt khác mà lập trình viên Ruby hay sử dụng: 3.times {print Ruby! ”} # In ra Ruby! Ruby! Ruby! ” 1.upto(9) {|x| print x} # In ra “123456789” times và upto. dụug Ruby Trước khi sử dụng Ruby, điều ta cần là một trình thông dịch Ruby, và ta cũng sẽ muốn biết cách sử dụng ba công cụ - irb, ri, và gem. 2.1. Trình thông dịch Ruby Một khi ta đã cài Ruby, . cho các lập trình viên hơn là to_s. 2.3. Tương tác Ruby với irb irb (viết tắt của “interactive Ruby) là một Ruby shell. Gõ một biểu thức Ruby tại dấu nhắc và nó sẽ thực hiện và hiển thị giá

Ngày đăng: 11/11/2014, 15:00

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w