ruby - 基本的な文法 - 変数・Object

 
1. 概要
2. Object
3. 何ものか? kind_of?

1. 概要

 最初にソースを見たときに、perl や php のように変数が $ で始まったりしないのね、配列が @ で、連想配列が % だったりしないのね。  とびっくり。  $ には別の意味があるのでした。  変数に関しては「Ruby 2.4.0 リファレンスマニュアル > 変数と定数」に詳細が述べられています。  ええい、面倒だ。  表に書いておこう。
分類 先頭文字 備考
ローカル変数 _ か 小文字
インスタンス変数 @
クラス変数 @@
グローバル変数 $

 他に、真偽  NULL をあらわす「擬似変数」というものがあってそれは「擬似変数 true false nil」をご参照ください。

 インスタンス変数・クラス変数というものの違いがよくわからない・・・。
 「【まとめ】インスタンス変数、クラス変数、クラスインスタンス変数 - Qiita」を読んで、どこかで一度整理したいと思います。

2. Object

 詳細は「Ruby 2.5.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Objectクラス 」をご参照ください。  Object クラスというのがあって、これがすべてのクラスの抽象クラスになるのだそうな。

3. 何ものか? kind_of?

 kind_of? か is_a? を使って(同じ引数と戻り値)でオブジェクトがなにものかを調べられます。

kind_of?(mod)
is_a?(mod)
 引数に指定できるのは「クラスやモジュールなど、Moduleかそのサブクラスのインスタンス」とのことで
#!/usr/bin/env ruby

hash = { :foo => 'fufufu' }

puts('hash.kind_of?(Hash) = ['"#{hash.kind_of?(Hash)}"']')
puts('hash.kind_of?(Array) = ['"#{hash.kind_of?(Array)}"']')

 上記のコードを実行すると、下記の結果になります、

> ./ソースファイル名.rb
hash.kind_of?(Hash) = [true]
hash.kind_of?(Array) = [false]