0

メソッド シグネチャで変数識別子を文字列として扱うように irb の動作を強制するにはどうすればよいですか?

irb ベースの計算ツールを作成しようとしていますが、irb シェルでこのツールを使用するユーザーの入力を減らしたいと考えています。私のユーザーは Ruby プログラマーではないか、Ruby の構文についてよく知らないと仮定します。には、コマンド ラインの機能が備わっている場合があります。

私はファイルを持っています

calculator.rb

このファイルの中には

def calculate(value, units)

... some logic

end

このようにirbを起動するようにユーザーに指示します

irb -r path/to/calculator.rb

ユーザーに入力するように指示します

calculate(10, inches)

irb で戻り値を取得する

2 番目のパラメーターを引用符で囲む必要があることをユーザーに理解させることなく、これを行うにはどうすればよいでしょうか。言い換えれば、ユーザーが入力する必要はありません

calculate(10, "inches")

ユーザー入力をスクリプト内のメソッドに渡す前に、変数識別子ではなく文字列としてキャストすることは可能ですか? たぶん、私がやりたいことは、irbシェルを根本的に壊さないと不可能ですか?

4

2 に答える 2

0

実際には、method_missing を使用して要求した方法で実行できます。一致するユニットは、例外を発生させる代わりに文字列に変換されます。

SO_CALC_UNITS = %w[inches feet yards meters parsecs]
def method_missing(method)
  if SO_CALC_UNITS.include?(method.to_s)
    method.to_s
  else
    super(method)
  end
end
于 2013-04-20T07:18:09.920 に答える