昨日ごりごりRuby書いているときに他の言語の感覚のままでハマったこと

 ひさびさにこういうハマりかたして、解決までえらく時間がかかってしまったので戒めにメモ。

 業務でプロジェクト内のコードを参考にしつつ、新規機能を追加していたのだけど思った通りの挙動をしない事案が発生。あれーと思い自分の書いたコードを見直しても参考にしたコードとほとんど変わらないので、色々調べてたら参考にしたメソッドと同名のメソッドが同ファイル内に定義されていることが判明。結果的にその同名メソッドが呼び出されていたというオチ。

 簡単な実証コードは以下。Rubyでは3引数のメソッドを呼び出そうとするとエラーになりますね。C#はオプションなしを優先するからそっちになれてしまってる優先順位を勘違いしていた。*1

*1:普通こんなコード書かないので、言語での実現可能性のお話ね