こんにちは。いつもお世話になっております。
floatを返す関数をかいたのですが、いちど割り当てたらそれ以降数値を変える必要がないのでループのなかで呼んでも毎回計算させないようにしたいのですが、それをifを使わずに書く方法はありませんか?
C#
1private float animationLength() 2 { 3 float result = 0; 4 5 for(int i = 0; i < frames.Length; i++) 6 { 7 result += frames[i].duration; 8 } 9 10 return result; 11 } 12}
すごく初歩的な質問ですが、助けていただけるとありがたいです。よろしくお願いします。
追記:
わかりにくいかもしれなく申し訳ないですが、こういう感じにして、fooを1度初期化して変更させない方法はありませんか?
C#
1float foo = animationLength();
なぜ「ifを使わずに」書きたいのでしょうか。
C++か何かを随分前に書いたときに、ifを使わずにやる方法があったような、なかったような気がしまして、、 なければ無いと言い切ってくださると諦めがつきます。
そもそもこのメソッド内だけで言うのであれば、resultが保存されないのでif文を使っても無理ですね。resultをクラス変数にしていれば、一応条件演算子で「float hoge = (result==0) ? aniationLength() : result;」みたいにif文無しに書けますが。
if文の有無にこだわる必然性わからないのですが、一度計算した値をキャッシュ(cache)する=メモ化(memorization)という技法は存在します。一度調べてみてはいかがでしょう。