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.
# 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
“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=> :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
Frozen String LiteralSampai 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 `’
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
Leave a comment