Đây là tài liệu tham khảo cú pháp Ruby.
Học Ruby có thể khiến bạn choáng ngợp vì lượng kiến thức phải nhớ.
Đó là lý do tôi biên soạn tài liệu tham khảo cú pháp này cho bạn!
Nó sẽ giúp bạn ôn tập bộ nhớ & nhanh chóng xem lại những gì cần biết để viết chương trình Ruby.
Chúc bạn vui vẻ!
- 1 Chuỗi (Strings)
- 2 Hash
- 3 Symbol
- 4 Nil
- 5 Mảng (Array)
- 6 Enumerable
- 7 File
- 8 Biểu Thức Chính Quy (Regular Expression)
- 9 Ruby Gems & Bundler
- 10 Lớp & Lập Trình Hướng Đối Tượng
- 11 Các Loại Biến
- 12 %w, %i, %q, %r, %x
- 13 Sử Dụng Dấu Ngoặc
- 14 Ví Dụ
- 14.1 Định Nghĩa Phương Thức
- 14.2 Định Nghĩa Lớp
- 14.3 Toán Tử Ba Ngõ (Ternary)
- 14.4 Nội Suy Chuỗi
- 14.5 Each Với Block
- 14.6 If / Else
- 14.7 Câu Lệnh Case
- 15 Tóm Tắt
- 15.1 Liên Quan
Chuỗi (Strings)
Chuỗi là dãy ký tự bên trong hai dấu ngoặc kép (""). Dùng để biểu diễn văn bản & dữ liệu.
Ví dụ cú pháp:
"Tôi thích sô-cô-la"
Một tùy chọn khác là dùng dấu ngoặc đơn ('').
'Ruby thật tuyệt vời'
Các phương thức quan trọng:
- size
- empty?
- include?
- gsub
- split
Thêm phương thức:
https://www.rubyguides.com/2018/01/ruby-string-methods/
Hash
Hash ({}) là cấu trúc dữ liệu cặp khóa-giá trị (a => b). Dùng như từ điển. Bạn truy cập phần tử hash bằng khóa. Khóa là duy nhất.
Ví dụ:
# Tạo
h = { a: 1, b: 2, c: 3 }
# Truy cập
h[:a]
# Gán
h[:test] = 10
Lưu ý: Hash mới được tạo bằng cú pháp {} (dấu ngoặc nhọn), nhưng bạn luôn truy cập phần tử hash bằng [] (dấu ngoặc vuông).
Điều đơn giản này khiến nhiều người mới nhầm lẫn, hãy ghi nhớ.
Hash với khóa chuỗi:
h = { "a" => 1, "b" => 2, "c" => 3 }
Phương thức quan trọng:
- key?
- fetch
- new (cho giá trị mặc định)
- merge
Thêm phương thức:
https://www.rubyguides.com/2020/05/ruby-hash-methods/
Symbol
Một chuỗi tĩnh dùng để định danh, ví dụ phổ biến là khóa hash. Chúng luôn bắt đầu bằng hai chấm (:bacon). Symbol không bao giờ dùng cho nội dung (các ký tự riêng lẻ).
Khi dùng bên trong ngoặc hash ({}) vị trí hai chấm bị đảo ngược.
Ví dụ:
{ abc: 1 }
Đây là symbol :abc.
Tìm hiểu thêm:
https://www.rubyguides.com/2018/02/ruby-symbols/
Nil
Một lớp singleton (chỉ cho phép một đối tượng) biểu diễn giá trị mặc định hoặc kiểu "không tìm thấy".
Đánh giá là "false" trong ngữ cảnh điều kiện.
Tìm hiểu thêm:
- https://www.rubyguides.com/2018/01/ruby-nil/
- https://www.rubyguides.com/2019/02/ruby-booleans/
Mảng (Array)
Một đối tượng dùng để biểu diễn danh sách các đối tượng. Mảng có thể chứa bất kỳ loại đối tượng nào (a = [1, "abc", []]), bao gồm cả mảng khác.
Bạn truy cập phần tử mảng bằng chỉ số (a[0]) & mảng lồng nhau bằng a[0][0].
Ví dụ:
a = [] a << 10 a << 20 a << 30 a # [10, 20, 30]
Phương thức quan trọng:
- size
- empty?
- push / pop
- join
- flatten
Thêm phương thức:
https://ruby-doc.org/core-2.6.4/Array.html
Enumerable
Một module Ruby dùng để lặp qua các phần tử của bất kỳ lớp nào triển khai phương thức each, như Array, Range & Hash.
Phương thức quan trọng:
- map
- select
- inject
Thêm:
Hướng Dẫn Cơ Bản Về Module Enumerable Trong Ruby (+ phương thức yêu thích của tôi)
File
Một lớp giúp bạn làm việc với file trong Ruby. Bao gồm đọc, ghi, hoặc lấy thông tin về file như dung lượng.
Ví dụ:
File.read("/tmp/test.txt")
Phương thức quan trọng:
- read
- write
Thêm:
https://www.rubyguides.com/2015/05/working-with-files-ruby/
Biểu Thức Chính Quy (Regular Expression)
Nếu bạn muốn tìm mẫu, chuỗi con, hoặc thứ gì đó cụ thể bên trong chuỗi, biểu thức chính quy có thể là thứ bạn cần.
Chúng dùng để validate email, số điện thoại. Hoặc trích xuất thông tin từ văn bản.
Ví dụ:
"aaaa1".match?(/[0-9]/) # true "".match?(/[0-9]/) # false
Tìm hiểu thêm:
https://www.rubyguides.com/2015/06/ruby-regex/
Ruby Gems & Bundler
Ruby gems là các gói bạn có thể tải về dùng trong chương trình Ruby.
Các gói này cung cấp hàm mới. Ví dụ, trong Rails, bạn dễ dàng thêm xác thực với gem Devise, hoặc phân trang với gem Kaminari.
Tìm hiểu thêm:
https://www.rubyguides.com/2018/09/ruby-gems-gemfiles-bundler/
Lớp & Lập Trình Hướng Đối Tượng
Ruby là ngôn ngữ lập trình hướng đối tượng. Chúng ta coi mọi thứ như đối tượng. Đối tượng được tạo từ bản thiết kế của chúng, là lớp.
Đối tượng có thể biết điều gì đó & làm điều gì đó. Bạn bảo đối tượng làm việc bằng phương thức.
Phương thức quan trọng:
- class
- include / extend
Tìm hiểu thêm:
- https://www.rubyguides.com/2019/02/ruby-class/
- https://www.youtube.com/watch?v=LuTTUNnSj6o&list=PL6Eq_d2HYExeKIi4d9rUEoD6qSiKS4vfe&index=2
Các Loại Biến
Biến là nhãn cho một đối tượng để chúng ta truy cập đối tượng đó. Quá trình gán biến cho đối tượng gọi là "gán biến".
Ví dụ:
a = 1
Chúng ta dùng nhiều loại biến trong Ruby.
Danh sách:
- Biến cục bộ (
something) - Biến instance (
@something) - Hằng số (
Something/SOMETHING) - Biến toàn cục (
$something)
Khác biệt chính nằm ở vị trí bạn có thể truy cập chúng.
%w, %i, %q, %r, %x
Có cách tạo đối tượng bằng cú pháp đặc biệt, dùng ký hiệu phần trăm (%). Đây là shortcut có thể tiết kiệm công sức.
Nếu bạn thấy %w trong Ruby, bây giờ bạn biết nghĩa của nó!
Ví dụ:
array_of_strings = %w(apple orange coconut) array_of_symbols = %i(a b c) string = %q(things) regular_expression = %r([0-9])
- %w - tạo mảng chuỗi
- %i - tạo mảng symbol
- %q - tạo chuỗi không dùng dấu ngoặc kép
Nhớ rằng ký hiệu phần trăm (%) cũng dùng làm toán tử modulo toán học.
Sử Dụng Dấu Ngoặc
Dấu ngoặc & dấu chấm phẩy không bắt buộc trong Ruby, nhưng có thể dùng.
Một số quy tắc cơ bản:
- KHÔNG DÙNG dấu ngoặc khi định nghĩa phương thức không đối số =>
def foo - DÙNG dấu ngoặc với đối số phương thức =>
def foo(a, b, c) - DÙNG dấu ngoặc khi muốn thay đổi độ ưu tiên, thứ tự ưu tiên của phép toán =>
(a.size + b.size) * 2
Độ dễ đọc là một lý do dùng dấu ngoặc, thay đổi thứ tự ưu tiên là lý do khác.
Ví Dụ
Ví dụ về cú pháp Ruby phổ biến.
Định Nghĩa Phương Thức
def backup_database # thân phương thức end
Thêm về phương thức:
- https://www.rubyguides.com/2018/06/rubys-method-arguments/
- https://www.rubyguides.com/2019/06/ruby-method-definition/
Định Nghĩa Lớp
class Fruit # methods end
Thêm về lớp:
- https://www.rubyguides.com/2019/02/ruby-class/
- https://www.rubyguides.com/2019/01/what-is-inheritance-in-ruby/
Toán Tử Ba Ngõ (Ternary)
true ? "yes" : "no"
Nội Suy Chuỗi (String Interpolation)
fruit = "orange"
puts "I have an #{fruit}. Would you like a slice of it?"
Thêm về nội suy:
- https://www.rubyguides.com/2019/07/ruby-string-concatenation/
Each Với Block
[1,2,3].each do |n| puts n end
If / Else
n = 20 if n > 1 puts "Greater than 1" else puts "Less than 1" end
Câu Lệnh Case
case 20 when 1..20 puts "Between 1 & 20" when 21..40 puts "Between 21 & 40" else puts "Not within a valid range" end
Trong đó 1..20 là đối tượng Range.
Tóm Tắt
Bạn đã học cơ bản cú pháp Ruby để viết chương trình Ruby! Ôn tập thường xuyên cho đến khi nó trở thành phản xạ.
Bạn cũng có thể thích danh sách tên phổ biến cho các yếu tố cú pháp.
Cảm ơn bạn đã đọc. 🙂