Ruby の ` メソッド
昨日、Ruby の単項演算子について調べていたんですが、`
という演算子があったので調べてみました。
そもそも Ruby の `
は『シェルコマンドを実行する手段』ぐらいしか知らなかったんですが、これって Kernel
のメソッドだったんですね…。
全然知らなかった…。
[ `
を再定義する]
class X def func str `#{str}` end def ` str str + str end end x = X.new x.send :`, "mami" # => "mamimami" x.func "homu" # => "homuhomu"
メソッド名はそのまま `
という名前で定義することができ、引数には `
ないの文字列が渡されます。
レシーバをつけて呼び出す方法がわからなかったので今回は #send
とクラス内から直接呼び出しています。
もしシェルコマンドを実行する場合の `
の挙動を変えたい場合は `Kernel.#`` を再定義すればよさそう。