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 OperatorFitur adalah fitur favorit saya. Ruby 2.3 memperkenalkan operator baru &.sebagai nil checker sebelum memanggil method.

[code language=”ruby”]# versi ruby <= 2.2 if post && post.body end< p>

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

a = nil a&.my_method # => nil[/code]

“Did you mean?”Fitur ini memungkinan Ruby untuk melakukan suggestion ketika terjadi NoMethodError karena tidak ada method.[code language=”ruby”]irb(main):014:0> class Post; def body; puts “aloha”; end end=> :bodyirb(main):015:0> p = Post.new=> #irb(main):016:0> p.bodyaloha=> nilirb(main):017:0> p.bobyNoMethodError: undefined method `boby’ for #Did you mean? body[/code]

Frozen String LiteralSampai pada Ruby 2.2, string by default adalah mutable dan untuk membuat string immutable, maka perlu memanggil method #freeze.[code language=”ruby”] # mutable string a = “aloha” a[1] = “j” puts a # => ajoha

# immutable string b = “aloha” b[1] = “j” # RuntimeError: can’t modify frozen String[/code]

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.

[code language=”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 `’[/code]

Method “Enumerable#grep_v”Method #grep_v memungkinkan mencari dan mengembalikan elemen yang tidak sesuai.[code language=”ruby”]a = [“aloha”, “baloha”, “caloha”]a.grep_v /calo/# => [“aloha”, “baloha”][/code]

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

[code language=”ruby”]1.positive? # => true-9.positive? # => false[/code]

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

Sumber