(Bài tiếp) Proc, Lambda

Struct trong Ruby

Có nhiều cấu trúc dữ liệu không nhất thiết tạo ra một lớp đầy đủ, trong các trường hợp đơn giản cấu trúc chỉ gồm vài thuộc tính thì có thể dùng Struct. Ví dụ định nghĩa một điểm có hai tọa độ (thuộc tính) là x và y thì có thể tạo nhanh chóng

# Tạo cấu trúc Point có hai thuộc tính x và y
Point = Struct.new(:x, :y)

# Tạo đối tượng từ cấu trúc
diem1 = Point.new(1,2)
diem2 = Point.new(3,4)

# cấu trúc tự động có các setter/getter để truy cập thuộc tính
puts diem2.y
# 4

OStruct trong Ruby

OpenStruct còn gọi là OStruct là một thư viện của Ruby, nó giống Struct ngoại trừ không yêu cầu định nghĩa trước các thuộc tính. OStruct cần nạp thư viện "ostruct" bằng từ khóa require

require 'ostruct'

person = OpenStruct.new
person.name    = "John Smith"
person.age     = 70
person.pension = 300

puts person.name     # -> "John Smith"
puts person.age      # -> 70
puts person.address  # -> nil

Cũng có thể khởi tạo trước một số thuộc tính và truy cập các thuộc tính với [] khi tên thuộc tính là các Symbol

require 'ostruct'
person = OpenStruct.new(name:'John Smith', 'age' => 70)
person[:age]
puts person.name

Lớp Math Ruby

Lớp này thuộc thư viện chuẩn của Ruby: Math, nó cung cấp các phương thức hăng số liên quan đến toán học như hằng số Pi, tính căn bậc 2 với sqrt, tính sin, cos ...

puts Math.sqrt(4)

Lớp Time Ruby

Lớp Time biểu thị về thời gian.

# Ngày - giờ hiện tại
t = Time.now
puts t

# Lấy năm, tháng, ngày
puts t.year
puts t.month
puts t.day

# Tạo mới một đối tượng time
t = Time.new(1988, 6, 10)

# Lấy thứ
puts t.wday

# Lấy ngày trong năm
puts t.yday

Đăng ký nhận bài viết mới
(Bài tiếp) Proc, Lambda