私は常に自分自身がこれをやって見つけるルビーをプログラミングする場合:ルビー分最大代入演算子
a = [a, b].min
これはa
とb
を比較し、a
の中で最も小さい値を格納意味。私はa
を2度書く必要があるので、上記のコードを書くのが好きではありません。
私はC++のいくつかの非標準的な方言は、私は非常に便利見つけるまさにこの
a <?= b
をした事業者があったことを知っています。しかし、私は実際に私がの反復を避けるという特徴にあるほど、オペレータにはあまり興味がありません。私は
a.keep_max(b)
a
がmy_array[indice1][indice2]
のような非常に長い変数、することができ、あなたはその倍を書きたくない書くことができれば、私も幸せになります。
私はこれでグーグルでやったことがありませんでしたし、結果が見つかりませんでした、うまくいけば、この質問がポップアップし、他の人にも便利です。
ですから、私がルビーで望むものを表現するための反復的な方法はありませんか?
IMO再結合値を見てみましょう。それについて考えてみましょう:今は 'a'は値2、もう一つは魔法、' a'は値1を持っています...その種のコードは理解してデバッグするのが難しいです。しかし、もちろん、私は機能的な醜い人です;-) – tokland
@tokland、そうですね。しかし、典型的な動的プログラミングコード、例えばfloyd-warshallについては、私が表現したものを正確に行うことがよくあります。結局のところ、割り当ては命令的言語の力となり得る。 – Tarrasch
あなたが命令的なループの中にいるときは、変数名を再利用する以外に選択肢がありません(そして、そのアルゴリズムの機能的実装はRubyでは非効率かもしれません)。私の注釈は、ちょうど理由があるために変数名を再利用する、怠惰なコーディングに対する防御に過ぎませんでした。 – tokland