+4

4 trong những bổ sung tuyệt vời của ruby 2.5.1 và cách cài đặt

Đây là bài dịch, bài gốc mời các bạn xem ở đây: https://medium.com/@kevinyckim33/4-of-many-awesome-additions-in-ruby-2-5-0-and-how-to-install-it-4b6f07bdc25f


Ruby 2.5.1: Phát hành 3/28/2018

Sau khi tham dự 1 cuộc hội thảo về ruby, có phần giới thiệu về những tính năng mới được triển khai trong ruby 2.5, tôi (tác giả) đã liệt kê 4 tính năng mới đáng chú ý từ phiên bản 2.5 mà tôi đã hiểu được từ buổi hội thảo đó.

1. Prepend và Append Arrays

Nếu bạn nghĩ rằng unshift nghe có vẻ không phải là cái tên hay ho lắm cho một phương thức của mảng thì chính xác là nó không hay thật.

Ruby 2.5 giờ đây cho phép bạn thêm vào một giá trị ở đầu mảng bằng cách sử dụng prepend. Rất dễ đọc và dễ nhớ phải không nào?

a = [2,3,4]
# CÁCH CŨ
a.unshift(1) #=> [1,2,3,4]
# MỚI TRONG RUBY 2.5
a.prepend(0) #=> [0,1,2,3,4]

Bạn cũng có thể append giá trị vào mảng thay vì phải sử dụng push hoặc <<

b = [1,2,3]
# CÁCH CŨ
b << 4 #=> [1,2,3,4]
b.push(5) #=> [1,2,3,4,5]
# MỚI TRONG RUBY 2.5
b.append(6) #=> [1,2,3,4,5,6]

2. SecureRandom.alphanumeric

Nếu bạn muốn tạo một chuỗi ký tự ngẫu nhiên, Ruby 2.5 sẽ giúp bạn thực hiện nó. Bây giờ, SecureRandom đi kèm với phương thức alphanumeric. Chỉ cần require securerandom ở đầu, và bạn có thể sử dụng dễ dàng như sau:

require 'securerandom'
alnum = SecureRandom.alphanumeric 
#=> "gKS5JuHBb2Xu3JtR"
alnum.size #=> 16
SecureRandom.alphanumeric(1) 
#=> "x"
SecureRandom.alphanumeric(2) 
#=> "8M"
SecureRandom.alphanumeric(20)
#=> "95SqPm8TNixZwonrjZqw"

3. #yield_self

Ruby 2.5 đã thêm một phương thức mới gọi là yield_self, nơi nó nhận giá trị input cho block đã cho và trả về output của câu lệnh cuối cùng trong block.

2.yield_self { |num| num + 3 } #=> 5
"Harry".yield_self { |str| "Hermione, #{str}, and Ron" }
#=> "Hermione, Harry, and Ron"

4. Từ khóa Structs

4a. Trước khi giới thiệu Structs là gì

Trước khi Shannon (diễn giả) giới thiệu cho chúng tôi khái niệm từ khóa mới này, anh đã yêu cầu mọi người giơ tay lên nếu họ đã từng sử dụng Struct trước đó. Khoảng một nửa phòng giơ tay lên, và tôi không phải là một trong số họ. Sau đó, tôi đọc bài đăng trên blog và bây giờ tôi biết nó là gì. Tôi sẽ tóm tắt ở đây:

Từ các tài liệu Ruby:

Struct is a convenient way to bundle a number of attributes together by using accessor methods without having to write an explicit class

Tạm dịch: Struct là một cách thuận tiện để gộp một số thuộc tính với nhau bằng cách sử dụng các phương thức accessor mà không cần phải viết một lớp rõ ràng.

Để thiết lập một lớp Ruby, (tôi sẽ sử dụng class Dog với một thể hiện của Fido ở đây), người ta có thể viết nó theo cách sách giáo khoa như sau:

class Dog
  attr_accessor :name, :breed
  def initialize(name, breed)
    @name = name
    @breed = breed
  end
  def introduce_self
    "Hi, my name is #{name} and I'm a #{breed}."
  end
end
fido = Dog.new('Fido', 'Corgi')
puts fido.introduce_self #=> Hi, my name is Fido and I'm a Corgi.

Với Struct, bạn có thể viết tắt rất nhiều về quá trình làm cho một con chó tự giới thiệu bằng cách viết sau đây:

Dog = Struct.new(:name, :breed) do
  def introduce_self
    "Hi, my name is #{name} and I'm a #{breed}."
  end
end
fido = Dog.new('Fido', 'Corgi')
puts fido.introduce_self #=> Hi, my name is Fido and I'm a Corgi.

Không cần phải gõ attr_accessors hoặc khởi tạo các phương thức với các biến instance, Struct sẽ xử lý mọi thứ cho bạn.

4b. Từ khóa Structs trong Ruby 2.5

Trở lại việc nói về Ruby 2.5 Giả sử chúng ta muốn tạo Spider-man bằng cách sử dụng Struct như sau:

Superhero = Struct.new(:name, :real_name) do
  def introduce_self
    "Hi, I'm #{name}, but my friends call me #{real_name}."
  end
end
spiderman = Superhero.new("Spiderman", "Peter")
puts spiderman.introduce_self
#=> Hi, I’m Spiderman, but my friends call me Peter.

Giả sử ba tiếng sau, bạn muốn tạo ra Batman, nhưng bạn quên mất thứ tự của tên. Có phải là tên thật của anh ấy trước, hay tên siêu anh hùng của anh ấy trước?

Nhờ từ khóa Struct của Ruby 2.5, bây giờ bạn có thể tạo một instance của một Struct bằng cách sử dụng các đối số như sau:

Superhero = Struct.new(:name, :real_name, :keyword_init => true) do
  def introduce_self
    "Hi, I'm #{name}, but my friends call me #{real_name}."
  end
end
batman = Superhero.new(real_name: "Bruce", name: "Batman")
puts batman.introduce_self
#=> Hi, I'm Batman, but my friends call me Bruce.

Chỉ cần lưu ý :keyword_init => true ở trên cùng, và chúng ta có thể tạo một instance mới của một siêu anh hùng bằng cách chỉ định các cặp key-value của nó.

Cách cài đặt

Vậy thì làm sao để có Ruby 2.5?

Đầu tiên hãy kiểm tra xem bạn đã có chưa. Gõ dòng sau vào terminal:

ruby -v

và nó sẽ cho bạn biết version hiện tại của bạn. Của tôi là:

ruby 2.3.1p112

Vậy tôi chưa có bản ruby mới nhất.

Tôi sẽ sử dụng Ruby Version Manager:

curl -L https://get.rvm.io | bash -s stable

Và gõ dòng sau:

rvm install ruby-2.5.1

Nó sẽ tốn 1 chút thời gian để tải về. Sau đó bạn cũng nên cài nó làm mặc định bằng cách:

rvm --default use 2.5.1

Vậy là bạn đã có phiên bản ruby mới nhất trên máy của mình rồi.

Tổng kết

Các phương thức trên đây là một vài trong số nhiều phương thức mà Ruby 2.5 mang đến để làm cho cuộc sống của bạn dễ dàng hơn. Để chắc chắn, hãy đọc lại tài liệu chính thức để cải thiện hiệu năng cho ứng dụng của bạn nhé!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí