タグ

ブックマーク / shugo.net (3)

  • ...を*, **, &の構文糖にすると言ったな、あれは嘘だ - Journal InTime(2022-12-25)

    _ ...を*, **, &の構文糖にすると言ったな、あれは嘘だ Ruby Advent Calendar 2022の25日目の記事です。 昨日は羽角さんのirb.wasmの入力メソッドをSTDIOからRelineへ改修した話でした。 前回のあらすじ 前回の記事で、 Ruby 3.2で*と**が導入されましたが、当初は...と併用されることを想定しておらず、すこしいびつな仕様になっていました。 ...は*, **, &の構文糖であるというシンプルな仕様に修正しました。 と言っていました。ところが…… 遅くなった? 松田さんから*, **や...による委譲が遅いというissueが報告されました。 forwardableを使った場合に比べて2倍以上遅いとのこと。forwardableが何でそんなに速いかというとruby2_keywordsを使っているからで、前回の記事でも書いたようにFeatu

    hoppie
    hoppie 2022/12/25
  • Ruby 2.5.0へのアップグレード, モジュールのrefineのバグ - Journal InTime(2017-12-25)

    _ Ruby 2.5.0へのアップグレード Ruby 2.5.0がリリースされたので、この日記をRuby 2.5.0にアップグレードした。 今のところtDiaryの動作はとくに問題なさそうだが、2.5.0のバグっぽい挙動を見つけてしまったような……。 Tags: Ruby _ モジュールのrefineのバグ モジュールをrefineした際のバグをいくつか直したつもりだったが、以下のケースでusing Dしていないのにrefineしただけで挙動が変わってしまうようだ。 module A def foo puts "A#foo" super end end class B def foo puts "B#foo" end end class C < B include A def foo puts "C#foo" super end end module D refine A do def f

    hoppie
    hoppie 2017/12/25
  • Rubyコーディング規約

    はじめに 文書は、Rubyによりコーディングを行う際の規約について述べる。 実際のプロジェクトに適用する際には、このコーディング規約をカスタ マイズして用いることを推奨する。 ソースコードの整形 インデント プログラムを読みやすくするため、インデントを適宜行う。インデント 幅は2とする。また、インデントにはスペースのみを使用し、タブは使用 しない。(環境によりタブ幅が異なるため。) 例: if x > 0 if y > 0 puts "x > 0 && y > 0" end end 一行の桁数 一行の桁数は最大80桁までとする。 空行 複数のクラスの区切には空行を挿入する。 例: class Foo ... end class Bar ... end 誤った例: class Foo ... end class Bar ... end また、クラス内の各構成要素の区切にも空行を挿入する。

    hoppie
    hoppie 2013/03/30
  • 1