Yang Baru dari Ruby 2.3

Ruby 2.3 dirilis pada akhir tahun 2015. Selain adanya peningkatan peforma, terdapat beberapa fitur baru yang sebelumnya tidak ada. Berikut ini adalah beberapa fitur baru dari Ruby 2.3 yang menurut saya menarik.

Self Navigation Operator
Fitur adalah fitur favorit saya. Ruby 2.3 memperkenalkan operator baru &.sebagai nil checker sebelum memanggil method.

# versi ruby <= 2.2
  if post && post.body
    post.body
  end

  # versi ruby 2.3
  if post&.body
    post.body
  end

  a = nil
  a&.my_method # => nil

“Did you mean?”
Fitur ini memungkinan Ruby untuk melakukan suggestion ketika terjadi NoMethodError karena tidak ada method.

irb(main):014:0> class Post; def body; puts "aloha"; end end
=> :body
irb(main):015:0> p = Post.new
=> #<Post:0x007fe29b8531c8>
irb(main):016:0> p.body
aloha
=> nil
irb(main):017:0> p.boby
NoMethodError: undefined method `boby' for #<Post:0x007fe29b8531c8>
Did you mean?  body

Frozen String Literal
Sampai pada Ruby 2.2, string by default adalah mutable dan untuk membuat string immutable, maka perlu memanggil method #freeze.

  # mutable string
  a = "aloha"
  a[1] = "j"
  puts a # => ajoha

  # immutable string
  b = "aloha"
  b[1] = "j"
  # RuntimeError: can't modify frozen String

Dengan menggunakan immutable string maka akan meningkatkan performa Ruby karena Ruby tidak perlu melakukan object allocation setiap ada string.

Oleh sebab itulah ada rencana pada Ruby 3 untuk membuat immutable string by default. Agar mempermudah transisi, pada Ruby 2.3 disediakan opsi untuk membuat string immutable by default. Opsi tersebut adalah menambahkan frozen_string_literal: true pada awal file Ruby.

# frozen_string_literal: true

str = "aloha"
str[1] = "b"

# my_file.rb:5:in `[]=': can't modify frozen String (RuntimeError)
#   from my_file.rb:5:in `<main>'

Method “Enumerable#grep_v”
Method #grep_v memungkinkan mencari dan mengembalikan elemen yang tidak sesuai.

a = ["aloha", "baloha", "caloha"]
a.grep_v /calo/
# => ["aloha", "baloha"]

Method “Numeric#positive?” dan “Numeric#negative?”
Method memungkinkan untuk mengecek apakah angka positif atau negatif.

1.positive? # => true
-9.positive? # => false

Untuk isi lengkap dan kompatibilitas Ruby 2.3 silakan lihat NEWS dan ChangeLog dari repositori Ruby.

Sumber

Yang Baru dari Ruby 2.3

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s