アカウント名:
パスワード:
def triangle(base, height) base * height / 2end
何故かって言われても、二項演算子の正体がメソッド呼び出しのシンタックスシュガーだから、としか言いようがない気が。
というか戻り値を浮動小数にしたいなら、base * height / 2.0って書けば良いだけで、すぐに慣れると思うけど。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日々是ハック也 -- あるハードコアバイナリアン
割り算 (スコア:1, 興味深い)
ちょっとした計算をするプログラムが書き難い気がする。
特に、割り算(/)の定義がCに合わせてあって、整数と実数とで扱いが違うのが不自然。
たとえば、この三角形の面積を計算する関数が間違いだというのは、どうも納得がいかない。 もちろん、to_f とか quo を使ったり、引数に整数が来ないように気を付けたりすればいいんだけど、
そういうことに気を使わなければならない必然性が良くわからない。
元のCの場合にはこの問題は起きないわけだから、単純にCに合わせるというのは合理的でないし、
実際PerlやPythonではCに合わせなかった。そこを敢えてこのようなふるまいにしたのは何故なのでしょうか?
Re:割り算 (スコア:3, 参考になる)
何故かって言われても、二項演算子の正体がメソッド呼び出しのシンタックスシュガーだから、としか言いようがない気が。
というか戻り値を浮動小数にしたいなら、base * height / 2.0って書けば良いだけで、すぐに慣れると思うけど。
Re:割り算 (スコア:0)
もちろんそうですが、なぜデフォルトの定義がそうなっているのかという質問です。
> というか戻り値を浮動小数にしたいなら、base * height / 2.0って書けば良いだけで、すぐに慣れると思うけど。
なるほど、例が良くありませんでした。
長方形の面積(area)と幅(width)から高さを求めるときに、area / width と書くのが間違いという話でもいいです。
たぶん私が言いたいことは、その場に 2 とか 2.0 とか書いてあれば挙動はわかるけど、
変数にして
Re:割り算 (スコア:0)
変数が整数だろうが知らないオブジェクトだろうが平気という方向で考えてみてはどうでしょう。