2020-09-01から1ヶ月間の記事一覧

Ruby の BasicObject + method_missing で遊んでみる

BasicObject を使いたいことがあるんですね — ima1zumi (@ima1zumi) September 24, 2020 Twitter 上で BasicObject についてやり取りしている流れで『BasicObject を使うことってあるんですか?』みたいな質問があったので簡単に BasicObject + #method_miss…

Ruby 3.0.0 preview1 がリリースと非推奨の警告がデフォルトではでなくなる予定

Ruby 3.0.0 preview1 がリリースされました。めでたい。 Ruby 3.0.0 Preview 1 Released NEWS 気になる機能はあとでまとめるとして NEWS には載ってなかった変更点をちょっと書きます。 ただし、この変更は Ruby 2.7.2 で取り込まれる予定なので Ruby 3.0.0 …

2020/09/24 今週の気になった bugs.ruby のチケット

内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Feature #16828] Introduce find patterns Ruby 3.0 ではパターンマッチに以下のようなサポートを追加する # 前方に * を使ったパター…

Ruby の Ractor で sleep sort をやってみた

簡単にやってみた。 $stdout.sync = true puts "かいし!!!" data = (1..10).to_a.shuffle pp data ractors = data.map { |i| Ractor.new(i) { |it| # バッファリングを無効化 $stdout.sync = true sleep it / 5.0 puts it } } # 待ち処理 ractors.map(&:t…

Ruby のメソッド呼び出しと変数参照について注意すること

最近、ハマっている人が何人書いたのでちょっとまとめてみます。 Ruby のメソッド呼び出し Ruby ではメソッドを呼び出す場合に他の言語と比較して『() を省略してメソッドを呼び出す事』ができます。 def hoge(a = nil) "#hoge(#{a})" end # 括弧がなくても…

2020/09/17 今週の気になった bugs.ruby のチケット

内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Feature #17171] Why is the visibility of constants not affected by private? 次のように Module#private に引数を渡さなかった場…

Ruby で明示的に名前を指定して親クラスのメソッドを呼ぶ

自身の親メソッドを呼ぶ 自身と同じ名前の親メソッドを呼ぶ場合は super が利用できます。 def value "Super#value" end end class Sub < Super def value # Super#value を呼ぶ super end end p Sub.new.value # => "Super#value" では、異なるメソッドから…

2020/09/11 今週の気になった bugs.ruby のチケット

内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Bug #15412] OpenStruct error when attribute is called 'method' OpenStruct は次のように要素にアクセスする事ができる require "o…

RubyKaigi Takeout 2020 の延長線で盛り上がってた Symbol#to_s について

RubyKaigi Takeout 2020 お疲れ様でした。 今回はオンラインということではじめて参加したんですが興味深い内容の話があって楽しかったです。 特に sawanobori からのサンダル紹介、焚き火で飯を炊いて魚を焼くコミッタの日常配信はニューノーマルを感じまし…

2020/09/04 今週の気になった bugs.ruby

内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ Version number bumped to 3.0.0 from 2.8.0 (tentative) 開発版の Ruby が 2.8 から 3.0 になった、めでたい これでほぼほぼ 3.0 がリ…

Ruby 3.0 で変わる Module#include の挙動

今日の RubyKaigi Takeout 2020 の Ruby Committers vs the World でチラッと話が出たのでちょっとまとめでみました。 該当チケット:Bug #9573: descendants of a module don't gain its future ancestors, but descendants of a class, do - Ruby master -…