canvaで描いてみた!
オブジェクトについて
オブジェクトと聞くと、ざわっとしてしまいます。
しかしなんでも正体を知ると怖くなくなる(はず)
なのでまずは
オブジェクトとは:Rubyでは、あらゆるものがオブジェクトです。(←は??)文字列やnilですらオブジェクトです。
オブジェクトが何をするのか:オブジェクトとは (いついかなる場合にも) メッセージに応答するものです。
よくわからなさMAXな説明です。
Railsチュートリアルでは lengthメソッド、emptyメソッドを使って説明しています。
legthメソッド
文字列の文字数を返すメソッドです。
このように.lengthすることで6(文字)という値を返してくれます。
emptyメソッド
空の文字列や配列に対してtrueを返すメソッド。それ以外はfalseといった真偽値を返すメソッドです。
empty?メソッドの末尾にある疑問符にご注目ください。Rubyでは、メソッドがtrueまたはfalseという論理値 (boolean) を返すことを、末尾の疑問符で示す慣習があります。 論理値は、特に処理の流れを変更するときに有用です。
empty - リファレンス - - Railsドキュメント
nilもオブジェクト
nilとは何も存在してない状態
Rubyの標準メソッド。nilの場合のみtrueを返し、それ以外はfalseを返す。nilとfalseを判別したい場合などに、
==
演算子を使わずに書ける。
そしてチュートリアルでは
Rubyにおいてnilは特別なオブジェクトです。Rubyのオブジェクトのうち、オブジェクトそのものの論理値がfalseになるのは、false自身とnilの2つしかありません。なお、「!!」(「バンバン (bang bang)」と読みます) という演算子を使うと、そのオブジェクトを2回否定することになるので、どんなオブジェクトも強制的に論理値に変換できます。
ちなみにnilを.emptyするとNo methodErrorというエラーが帰ってきます。
nilオブジェクトはempty?メソッドには対応していません。ただし文字列に変えるto_sメソッドをnilに使うとempty?メソッドにtrueで答えます。
まとめ
チュートリアルだけを見ていると???が飛び交いますが、同時にいろんな記事や情報をググりながら進めていく方がいいと思いました。
チュートリアルは言い回しが難しいものが多いし簡潔では無いものが多いからです。
オブジェクトとは
1.アイデンティティを持っている
2.メッセージを受け取る
3.内部状態を持つオブジェクトとは自分が何者か知っていて、名前を持ち、メッセージを受け取ってなんらかの処理を施す、内部状態を持つとは、例えば,
Integerは大きさをもつ、Stringは長さをもち、Arrayは格納する箱を持つ具合に、、、