Ruby 2.5.0 kararlı olmayan sürümü 10 Ekim 2017’de yayınlandı. Bu yeni sürüm içinde bolca yeni özellik ve performans iyileştirmeleri mevcut. Bu yeni özelliklerden 7 tanesini listeledim.
- bundler gemi artık standart kütüphanede. Artık
gem install bundler
ile bundlerı yüklememize gerek yok. - Kernel#yield_self
yield_self bloğu eklendi.
12343.yield_self { |n| n * 10 } #=> 30names = ['Richard', 'Linus']names.join(', ').yield_self { |s| "(#{s})" } #=> "(Richard, Linus)"
- Array#prepend/append
Arraylere unshift/push methodlarına alias olarak prepend ve append eklendi.
1234567array = [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]
- Dir.children ve each_child
Dizin içindeki dizin ve dosyaları listelemek için şöyle bir yol izliyorduk.
12Dir.entries('./test/dizin')#=> [".", "..", "dosya_1.rb", "dosya_2.txt"]
Bunun yerine “.” ve “.. ” dizinleri gözardı etmek için artık Dir.children kullanabiliriz.
12Dir.children('./test/dizin')#=> ['dosya_1.rb', 'dosya_2.txt']
Dir.each_child enumarator geri döndürür array değil. .to_a ile array yapabiliriz.
12345Dir.each_child('./test/dizin')#=> #<Enumerator: Dir:each_child(\"./test/dizin\")>"Dir.each_child('./test/dizin').to_a#=> ['dosya_1.rb', 'dosya_2.txt']
- String#delete_prefix/delete_suffix
String sınıfına delete_prefix ve delete_suffix methodları eklendi. Bir stringin başından ve sonundan belirtilen karakterleri silebilir.
12345'invisible'.delete_prefix('in') #=> "visible"'pink'.delete_prefix('in') #=> "pink"'worked'.delete_suffix('ed') #=> "work"'medical'.delete_suffix('ed') #=> "medical"
- rescue/else/ensure artık do/end blokları içinde kullanılabilir.
rescue/else/ensure artık do/end blokları içinde begin ve end olmaksızın kullanılabilecek
123456789[1].each do |n|n / 0rescue# rescueelse# elseensure# ensureend
Eğer { } kullanırsanız hata alırsınız.
123456789101112[1].each { |n|n / 0rescue# rescueelse# elseensure# ensure}#=> SyntaxError: (irb):3: syntax error, unexpected keyword_rescue, expecting '}'# rescue# ^~~~~~ - Hash#transform_keys/transform_keys!
transform_keys bloğunu hash ile kullanarak hash keyleri üzerinde değişiklik yapabilirsiniz.
123hash = { a: 1, b: 2 }hash.transform_keys { |k| k.to_s }#=> { 'a' => 1, 'b' => 2 }
transform_keys! ise ünlemden anlaşılacağı gibi hashin kendisini değiştiriyor 🙂
123456hash = { a: 1, b: 2 }hash.transform_keys! { |k| k.to_s }#=> { 'a' => 1, 'b' => 2 }hash#=> { 'a' => 1, 'b' => 2 }
Diğer tüm değişiklikleri şuradan görebilirsiniz: News for Ruby 2.5.0
Ekim 27, 2017 at 8:24 pm
saygı duydum hocam