記事投稿日: 2013年3月14日
ちょっとはまってしまったのでメモしておきます。
関数を作って、trueなら1、falseなら0を返す処理を作ったのですが、
その値を元に計算をしようとしてもできず、
String can’t be coerced into Fixnum
というエラーが出ました。
(※慣れている方なら、そもそも
0や1を戻り値に使ったりしないのでしょう…。)
型がおかしいのか、と思って、返り値に .to_i をしてみましたが
undefined method `to_i’ for false
…怒られました。
false…? 返り値は0なのですが…。
どうも、値が返った時点で0がFalse扱いになっているようです。
下記の記事が参考になりました。
↓
『rubyではなぜnil.to_iがゼロを返すのか?Add Star』
http://d.hatena.ne.jp/ma2/20051227/p1
そういえばPHPでも似たようなことがありました…。
はっきりした処理になっていないので、
関数の返り値はtrueとfalseにしました。
それをifで判定して、trueなら加算という処理にしました。
こうしてまとめて書いてみると、
処理上は、これで良かった気がします。
メンテナンスする時、if判定で何を加算しているか
はっきり見えます。
Railsって自然と管理しやすい構造になっているんでしょうか。
苦労するけど、出来上がってみたらすっきりしているんですよね…。
…慣れるまで大変ですが。
コメントを残す