2020-01-01から1年間の記事一覧
Ruby 3.0.0 preview1 がリリースされました。めでたい。 Ruby 3.0.0 Preview 1 Released NEWS 気になる機能はあとでまとめるとして NEWS には載ってなかった変更点をちょっと書きます。 ただし、この変更は Ruby 2.7.2 で取り込まれる予定なので Ruby 3.0.0 …
内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Feature #16828] Introduce find patterns Ruby 3.0 ではパターンマッチに以下のようなサポートを追加する # 前方に * を使ったパター…
簡単にやってみた。 $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 ではメソッドを呼び出す場合に他の言語と比較して『() を省略してメソッドを呼び出す事』ができます。 def hoge(a = nil) "#hoge(#{a})" end # 括弧がなくても…
内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Feature #17171] Why is the visibility of constants not affected by private? 次のように Module#private に引数を渡さなかった場…
自身の親メソッドを呼ぶ 自身と同じ名前の親メソッドを呼ぶ場合は super が利用できます。 def value "Super#value" end end class Sub < Super def value # Super#value を呼ぶ super end end p Sub.new.value # => "Super#value" では、異なるメソッドから…
内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Bug #15412] OpenStruct error when attribute is called 'method' OpenStruct は次のように要素にアクセスする事ができる require "o…
RubyKaigi Takeout 2020 お疲れ様でした。 今回はオンラインということではじめて参加したんですが興味深い内容の話があって楽しかったです。 特に sawanobori からのサンダル紹介、焚き火で飯を炊いて魚を焼くコミッタの日常配信はニューノーマルを感じまし…
内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ Version number bumped to 3.0.0 from 2.8.0 (tentative) 開発版の Ruby が 2.8 から 3.0 になった、めでたい これでほぼほぼ 3.0 がリ…
今日の 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 -…
in_groups_of を Gem なしでやる方法がわからない— masuyama13 (@masuyama_13) August 31, 2020 in_groups_of っていうのは ActiveSupport にあるメソッドで each_slice と同じように任意の要素数で配列を分割するんですが、足りない分を nil で埋めるという…
内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Bug #17030] Enumerable#grep{_v} should be optimized for Regexp ary.select { |e| e.match?(reg) } と比較して ary.grep(reg) の方…
内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Misc #17041] DevelopersMeeting20200826Japan 来週水曜日に開発者会議があります 気になるチケットがあれば上記のチケットにコメント…
内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Feature #15504] Freeze all Range object リテラルで Range を生成すると同じ id のオブジェクトが返ってくるケースがある # これは…
今日 Ruby Hacking Challenge in Hamada.rb に参加したときに ruby_jard という Ruby のデバッグツールを教えてもらいました。 これがかなり凄まじくすごかったのでちょっとまとめてみます。 ruby_jard とは ruby_jard とは Ruby のコードをデバッグするツー…
内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Feature #17097] map_min, map_max #map_min #map_max を追加する提案 # 以下のようなコードを %w[aa b cccc dd].max_by(&:length).le…
今時と書いたんですがあんまり今時の C++ は知らないのでもっといい書き方ってありますかね? 元ネタ:いろいろな言語の連想配列系リテラル記法を比較してみた|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社 C++ の例が載って…
内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Feature #16923] Switch reserved for numbered parameter warning to SyntaxError _1 という名前は Numbered parameter で使用されて…
通常はクラスからインスタンスを生成するときに .new を使用するんですが、類似するクラスメソッドに .allocate というメソッドがあります。 Class#allocate (Ruby 2.7.0 リファレンスマニュアル) .allocate も .new と同様にクラスのインスタンスを生成する…
Ruby では単項演算子 ! や + などをメソッドとして再定義する事ができます。 class X # ! はそのまま ! という名前のメソッドとして定義する def ! "X#!" end # + は二項演算子と区別するために +@ と書く def +@ "X#+@" end end x = X.new p !x # => "X#!" …
内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Feature #17043] Invokable module for custom Proc-like objects 『Proc なオブジェクト』を明示化できるモジュールの追加案 Invokab…
内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 今週は少なめ。 先週のまとめ [Bug #17017] Range#max & Range#minmax incorrectly use Float end as max Range#max と Range#minmax の戻り値に一貫…
内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Feature #17006] Let Kernel#Hash take a block to provide the default value Hash に default_proc を渡せるようにする提案 # 既存…
書き溜めてはいたんですが、ブログに公開するのを忘れてました。 内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Feature #16986] Anonymous Struct literal Struct.new(:a, :b).new(…
こんな深夜に Ruby で面白そうなチケットを見かけたのでいろいろと試してみました。 チケット: [Feature #17004] Provide a way for methods to omit their return value PR : Provide a way for methods to omit their return value (rev.2) by shyouhei ·…
元ネタ Ruby の true と false がわかってない, いつも if 1 == true みたいなの書いて false 返されてあれ?ってなってる— ima1zumi (@ima1zumi) June 29, 2020 まあ 1 と true は別オブジェクトだからなーと思いつつ 1 == true は例外を返してほしいなーと…
内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Bug #11669] inconsitent behavior of refining frozen class freeze されたクラスに対して Refinements で新しいメソッドを定義する…
Ruby のクラス変数とクラスのインスタンス変数の違いの覚書。 クラス変数 Ruby で @@変数名 で変数を定義するとクラス変数として定義されます。 また、この変数は継承したクラスでも参照する事ができます。 class X @@class_variable = "hoge" end class Y <…
Ruby の標準ライブラリに Hash#except が追加されました。 ActiveSupport にある有名なやつですね。 特に問題がなければ Ruby 2.8/3.0 で追加される予定です。 チケット Feature #15822: Add Hash#except - Ruby master - Ruby Issue Tracking System コード…
ちょっと遅れましたが貯めてはいました。 内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Feature #15973] Let Kernel#lambda always return a lambda lambda(&proc {}).lambda? の戻…