Rubyで0がそのまま返らず、False扱いになる

カテゴリ: Rails, Ruby

記事投稿日: 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って自然と管理しやすい構造になっているんでしょうか。
苦労するけど、出来上がってみたらすっきりしているんですよね…。
…慣れるまで大変ですが。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA




トップに戻る