技術顧問の野又です。RenoSysでは月に一回社内勉強会を実施しています。
Rubyの新しいバージョンである2.7が昨年末にリリースされており、クイズ形式の勉強会を社内で実施したので資料共有いたします。
スライド
以下補足です
パターンマッチ
case {a: 0, b: 1, c: 2} in {a: 0, i: 1} puts 1 in {a: 0, b: tmp} puts 2 puts tmp in {a: 0, b: 1, c: tmp} puts 3 puts tmp in {a: 0, b: 1, c: 2} puts 4 end
実験的な機能です。現状では実行すると警告が出ます
warning: Pattern matching is experimental, and the behavior may change in future versions of Ruby!
irbに追加されたのは?
- 複数行編集
- readlineが不要に
- クラス、モジュール、メソッドのリファレンスをその場で確認できるように
- inspect結果に色がつくように
個人的にMacのバージョンを上げるとreadlineまわりが壊れてirbが動かなくなるということは今までよくありました。 Ruby 2.7ではreadline相当の機能がRubyで再実装されたため壊れにくくなっています。
キーワード引数として許容されるのは?
def foo(h, **kw); end; foo(key: 42)
def foo(h, key: 42); end; foo(key: 42)
def foo(**kw); end; foo({key: 42})
def foo(h, key: 42); end; foo({key: 42})
今までキーワード引数とハッシュがごっちゃになっていたところが将来のバージョンでは分離される予定です。 現状は警告のみ。
Ruby 2.7をコンパイルするのに必要なのは?
- C90
- C99
- C11
- C17
C99は例えば変数宣言がブロックの先頭だけでなく適宜宣言可能になっています。
集計メソッド
["a", "b", "c", "b"].xxx #=> {"a"=>1, "b"=>2, "c"=>1}
- count_map
- sum_map
- pally
- tally
英語でtallyは勘定、集計するという意味
番号指定パラメター
[1,4,3].map{puts xxx} # => 1 4 3
_0
_1
$0
$1
個人的には配列と同じで0はじまりが好きですが仕様上そうはなっていないようです。
参考
https://www.ruby-lang.org/ja/news/2019/12/25/ruby-2-7-0-released/
宣伝
RenoSysでは現状Ruby 2.7に移行できていませんが今後対応予定です。