2014年03月17日

ふらっと気になったので

RubyってJavaみたいに型を書かないよなぁー、不思議だなぁー、と思っていまして。
で、外出中にとある疑問がわいてきた。(家で思いつけばすぐ実験できたのに、たいていこの手の疑問が出るのは外出先なんですよね……)
ので、実験してみた。
本のどっかに書いてあったかもしれないけど、探すのが面倒なので、実験しましたw

文字型 vs 数値


こんなコードを書いて実験してみる。

「12312」って出てくるか、「135」って出てくるかなぁ? って思って実行してみました。
その結果、no implicit conversion of Fixnum into String (TypeError) っちゅーエラーが出てきました。
このエラーメッセージをググってみると、こんなページが出てきた。曰く、変数は文字列でも数値でも代入可能だが、文字列連結時には型を見ているので、型をあわせる必要があるとのこと。そうなのか。型書かないからその辺勝手にやってくれるのかと思ったらそうでもないのか。覚えておこう。

で、ここでちょっと自分の興味が膨らんできたのでもう一つコードを書いてみる。

まあ、無理だと分かってますが! 実行してみます!
no implicit conversion of Fixnum into String (TypeError) ってエラー、やっぱり同じエラーですね。当たり前といえば当たり前ですが。

更に遊ぶ。

すると、undefined method `-' for "123":String (NoMethodError) ってエラーが出てきますね。やっぱりダメなのは分かってたけど、エラーが違うぞ? そんなメソッドねぇよ! って怒られちゃいました(´・ω・`)


すると、String can't be coerced into Fixnum (TypeError) ってエラーが出てきましたねぇ。やっぱダメ。Stringを数値に変換出来ないよ! って言ってるのかな?


さて、これはどうなる。
undefined method `-' for "123":String (NoMethodError) やっぱりだめでしたー。似たようなエラー、上の方でも見ましたねそういえば。一緒か。

そもそもだ


そもそも"123"と123は違うんですよね。前者は文字列で、後者は数値。
こんなコードを書いて実行してみる。たぶん false って帰ってくる。

案の定、falseって帰ってきました。
やっぱり""が付いてるか付いてないかで、型をちゃーんと区別してるんですねぇ。

まとめ


やっぱり型は意識しよう。
アホな疑問からスタートした実験でしたが、意外と楽しかったです。
タグ:ruby
posted by Dahlia* at 20:26| Comment(1) | Rubyことはじめ
この記事へのコメント
こういう実験も大事ですね
Posted by 2016 at 2016年04月06日 12:58
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: