Cải thiện code ruby với một số thủ thuật
Bài đăng này đã không được cập nhật trong 6 năm
Sử dụng Lambda Literal ->
- Với -> ta có thể tạo lambda một cách dễ dàng:
pry(main)> lambda = -> {2 + 3}
=> #<Proc:0x00558f4751eab0@(pry):6 (lambda)>
pry(main)> lambda.call
=> 5
pry(main)> lambda = -> (variable) {variable + 10}
=> #<Proc:0x00558f47202750@(pry):8 (lambda)>
pry(main)> lambda.call(20)
=> 30
Tạo Hash từ danh sách giá trị
- Ta có thể tạo một Hash từ danh sách các giá trị bằng cách sử dụng Hash[...]
pry(main)> Hash['name', 'Ruby on rails', 'age', 20, 'location', 'Da Nang']
=> {"name"=>"Ruby on rails", "age"=>20, "location"=>"Da Nang"}
Sử dụng double star (**)
- Để hiểu rõ hơn ta tìm hiểu thông qua method sau:
def test_method(a, *b, **c)
return a, b, c
end
// a là tham số bình thường
// b là tham số kiểu mảng
// c là tham số kiểu hash
Ta kiểm tra giá trị return ứng với các tham số.
- Chỉ chứa một tham số:
pry(main)> test_method('a')
=> ["a", [], {}]
- Chứa nhiều hơn 1 tham số
pry(main)> test_method('a', 'b', 'c', 'd')
=> ["a", ["b", "c", "d"], {}]
- Chứa tham số kiểu hash:
pry(main)> test_method('a', 'b', 'c', 'd', e:1, f:2)
=> ["a", ["b", "c", "d"], {:e=>1, :f=>2}]
Khởi tạo giá trị mặc định cho hash
- Theo mặc định, khi cố gắng truy cập một giá trị không được định nghĩa trong một hash, bạn sẽ nhận được nil. Ta có thể thay đổi điều này khi khởi tạo.
# khởi tạo giá trị mặc định 0
irb(main):012:0> hash = Hash.new(0)
rb(main):013:0> hash[:key] # key khong ton tai
=> 0 # gia tri mac dinh luc khoi tao
# vi du khac
hash = Hash.new({})
hash[:key]
=> {}
Tạo mảng chữ số hoặc chữ cái
# a -> z
irb(main):014:0> ('a'..'z').to_a
=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
# 1 -> 30
irb(main):016:0> (1..30).to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
Tham số mảng băm bắt buộc
- Tìm hiểu thông qua 1 ví dụ sau
def hash_demo(a:, b:, c: 'default')
return a, b, c
end
irb(main):050:0> hash_demo(a: 10)
=> # ArgumentError: missing keyword: b
# c có giá trị mặc định.
irb(main):051:0> hash_demo(a: 10, b: 3)
=> [10, 3, "default"]
# đủ cả 3 tham số
irb(main):052:0> hash_demo(a: 10, b: 3, c: 20)
=> [10, 3, 20]
Sử dụng values_at
# Gan gia trị khi không sử dụng values_at với mảng
arr = [1,2,3,4,5]
a, b, c = arr.values_at(0, 1, 4)
# sử dụng values_at với mảng
arr = [1,2,3,4,5]
a, b, c = arr.values_at(0, 1, 4)
Với hash
hash = {height: 300, lenght: 200}
p hash.values_at(:height, :lenght)
# [300, 200]
All rights reserved