
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Ruby開発チームは2019年12月25日、オープンソースのオブジェクト指向スクリプト言語「Ruby」の最新安定版「Ruby 2.7.0」をリリースしたと発表した。
Ruby 2.7.0では多くの新機能を追加し、パフォーマンスを改善した。主な改良点は次の通り。
パターンマッチ機能を導入
関数型言語で広く使われているパターンマッチ機能を実験的に導入した。これにより、渡されたオブジェクトの構造がパターンと一致するかどうかを調べ、一致した場合にその値を変数に代入するといったコードを記述しやすくなった。
require "json"
json = <<END
{
"name": "Alice",
"age": 30,
"children": [{ "name": "Bob", "age": 2 }]
}
END
case JSON.parse(json, symbolize_names: true)
in {name: "Alice", children: [{name: "Bob", age: age}]}
p age #=> 2
end
REPLを改善
Rubyに添付されている「REPL(Read-Eval-Print-Loop)」である「irb」において、複数行編集をサポートした。さらにドキュメント生成コマンド「rdoc」との連携も実現した。これにより、irb内でクラスやモジュール、メソッドのレファレンスをその場で確認できるようになった。
GC.compactメソッドの導入
断片化したメモリをデフラグする「Compaction GC」を導入した。具体的には「GC.compact」メソッドを追加した。このメソッドを実行するたびに、ヒープのコンパクションを実行する。
Rubyのオブジェクトはヒープに格納されており、オブジェクトを格納するスロットの並びであるページの集合としてヒープを実装している。Rubyにおけるヒープのコンパクションは、空きスロットのあるページに対して、生きているオブジェクトを別のページから動かして詰めていくことで、メモリの断片化を解消し、不要なページを解放する。
通常の引数とキーワード引数を分離
キーワード引数と「positional」な引数(普通の引数)の自動変換を非推奨とした。この変換機能は、次期主要アップデートであるRuby 3で削除する予定。
Ruby 2では、キーワード引数を単なるハッシュとして渡すという基本設計を採用していたが、このような設計は数多くの非直感的挙動を引き起こしている。そこでRuby 3では、この問題を解決するため、キーワード引数と普通の引数を分離することにした。
機能を削除する先駆けとして、Ruby 3では動かなくなる非推奨の機能を用いたコードに警告を出すようにした。
番号指定パラメーターなどを追加
関連記事
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.
"格納" - Google ニュース
January 06, 2020 at 01:00PM
https://ift.tt/2sP6zxT
Ruby 2.7が公開、関数型言語で広く使われているパターンマッチ機能などを追加 - @IT
"格納" - Google ニュース
https://ift.tt/2rlvA2Y
Shoes Man Tutorial
Pos News Update
Meme Update
Korean Entertainment News
Japan News Update
No comments:
Post a Comment