Yang Baru dari Ruby 2.3

KMKLabs
Karena Kita Vidio
Published in
2 min readJan 18, 2016

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.

[code language=”ruby”]
# 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
[/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
=> :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
[/code]

Frozen String Literal
Sampai 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 `<main>’
[/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

--

--

KMKLabs
Karena Kita Vidio

The folks who make BBM, Vidio, Liputan6, Bintang, Bola, and Klikdokter.