まりぴよこのブログ

日々の日記。技術ネタでまとまりきってないものの記録、伝わる文章の書き方を練習とか。

Ruby KoansでTDDを学ぼう・・からmacでrubyのドキュメントをさくっと引けるように設定した

昨日の記事でなんとか自動実行環境が整ったので・・・

rubykoans.com

Learn Ruby with the NEO RUBY KOANS とは

穴埋め問題のようにテストケースにある穴を塞いでいくことで、Rubyを学べる教材、みたい。

簡単な英語が読めればコメントにあるヒントを元に問題を解いていける。。

ハズなんだけど・・

いきなり2問目でつまづいた・・

【問題】nilについて

def test_nil_is_an_object
  assert_equal __, nil.is_a?(Object), "Unlike NULL in other languages"
end

__のところにテストが正しくなるように穴埋め・・なんだけど・・・ 意味が分からん;;

nil.is_a?(Object) がなんなのかを埋めろ・・ってことなので

irbで実行してみる

$ irb
> nil.is_a?(Object)
=> true

おお! trueを入れろと・・いうこと??

わからんかったらirbに聞いてみろってことか。。

↓ヒント・・ていうかまんま答えを教えてくれたサイト

Ruby Koans Answers (via @AstonJ)

つまり、「RubyではnilはObjectである。(他の言語とは違って)」って意味か。。 なるほど。。

nilについて(irb先生に聞いてみた)

  • nilオブジェクトに対して、メソッドコールすると NoMethodErrorが発生する
  • その時のエラーメッセージは "undefined method"
  • nil.nil? は true
  • nil.to_s は ""
  • nil.inspect は "nil"
inspectとは

inspect (Object) - Rubyリファレンス

inspectメソッドは、オブジェクトを分かりやすい文字列にして返します。

  • StringやArrayなど、inspectメソッドを上書きしているクラスでは、各クラスのinspectメソッドの結果が返ります。

  • 数値、nil、true、false、Moduleオブジェクト、Classオブジェクトでは、to_sメソッドと同じ文字列が返ります。

  • それ以外のオブジェクトでは、#<クラス名:0x16進数 @インスタンス変数名=値, ...>という文字列が返ります。

あれ??なんかおかしいな;;

nil.to_sとnil.inspect返ってくる値違うんだけど;;

Ruby リファレンスを引けるようにする (mac)

  • Dashインストール

Dash - API Docs & Snippets

Dash - API Docs & Snippets

  • DocsetにRuby 2を追加

nil.inspectで引くとこんな感じ

f:id:mpiyok:20150604081931g:plain

Always returns the string "nil"

だそうな。。

参考:

stackoverflow.com

human readableな文字列を返す、から。らしい。

なるほど。うむうむ。 大分環境が整って来たぞ♪