Ruby 2.5 ile Gelenler
30 Dec 2017Merhaba, Ruby en son versiyonu olan 2.5 ile yeni yıla girmeden karşımıza çıktı. Bu versiyon ile ne gibi özellikler geldi kısaca bakalım.
Begin/End’e gerek kalmadı
Bu özellik ile artık begin end
block’u yazmak zorunda kalmıyoruz.
# 2.4
[1].each do |n|
begin
n / 0
rescue
puts "rescue"
else
puts "else"
ensure
puts "ensure"
end
end
# 2.5
[1].each do |n|
n / 0
rescue
puts "rescue"
else
puts "else"
ensure
puts "ensure"
end
Backtrace ve error message’ın sıralaması değişti
Hata masajları ve nerede hata olduğunu gösteren mesajlar artık tam tersi şekilde gelmeye başladı. Bu sanırım daha açıklayıcı olacak gibi geliyor bana. Sanırım bu özellikle 2.5 ile gelse bile daha çok deneysel bir özellik olduğu söyleniyor.
# 2.4
> puts "hello #{name}"
# NameError: undefined local variable or method `name' for main:Object
# from (irb):1
# from /Users/ender/.rvm/rubies/ruby-2.4.2/bin/irb:11:in `<main>'
# 2.5
> puts "hello #{name}"
# Traceback (most recent call last):
# 2: from /Users/ender/.rvm/rubies/ruby-2.5.0/bin/irb:11:in `<main>'
# 1: from (irb):1
# NameError (undefined local variable or method `name' for main:Object)
String#delete_prefix/delete_suffix
String sınıfı için iki yeni metot geldi. Gerekli bir metot mu bilemiyorum ama zaman zaman işe yarayabilir gibi duruyor.
> "ender".delete_prefix('en')
# => "der"
> "minder".delete_prefix('en')
# => "minder"
> "ender".delete_suffix('er')
# => "end"
> "deriz".delete_suffix('er')
# => "deriz"
Bir başka alias daha
unshift/push’un alias’ı prepend/append artık bizlerle.
> array = [3, 4]
> array.prepend(1, 2) # => [1, 2, 3, 4]
> array # => [1, 2, 3, 4]
> array = [1, 2]
> array.append(3, 4) # => [1, 2, 3, 4]
> array # => [1, 2, 3, 4]
Hash#transform_keys/transform_keys!
Hash’e yeni ve kullanışlı metotlar geldi. Bu metotlar aşağıdaki gibi çalışıyor.
> hash = { a: 1, b: 2 }
> hash.transform_keys { |k| k.to_s }
# => { 'a' => 1, 'b' => 2 }
> hash = { a: 1, b: 2 }
> hash.transform_keys! { |k| k.to_s }
# => { 'a' => 1, 'b' => 2 }
> hash
# => { 'a' => 1, 'b' => 2 }
Tabiki bütün özellikler bunlarla sınırlı değil. Bütün detaylara buradan ulaşabilirsiniz.
Sevgiler.