読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

演算子式の戻り値

Rubyではいくつかの演算子はクラスのメソッドとして再定義することが可能です。ということは、演算子式の戻り値を変えてやれば、代入式の評価結果を変更できるんじゃね?と思いたって試してみましたがやはり不可でした。

class Foo
  def var=(value)
    return "var="
  end
  def []=(key, value)
    return "[]="
  end
end

puts "\n--- ="
foo = Foo.new
puts foo.var="aaa"
puts foo.var="bbb"

puts "\n--- []="
puts foo["a"]="aaa"
puts foo["b"]="bbb"

実行結果です。左辺の値が式全体の評価結果になっています。

--- =
aaa
bbb

--- []=
aaa
bbb

まぁ、↓みたいなコードで実行後にresultとfoo.varの値が違っているとかいう方が不気味かもなー。

result = foo.var = "xxx"


ちなみに「+」演算子の戻り値は制御可能です。

class Foo
  def +(value)
    return "+"
  end
end

puts "\n--- +, +="
puts foo + "aaa"
puts foo += "bbb"
puts foo

実行結果です。

--- +, +=
+
+
+