enjoy Ruby! このページをアンテナに追加 RSSフィード

   papandaのRubyを楽しむ日記。

2006-08-30

たのしいRuby(3)~便利なRuby

今日は、まずは第2章便利なオブジェクト

配列

name = ["hoge","poyo","foo"]

p name[0] #=> "hoge"

p name[1] #=> "poyo"

name[2] = "bar"

p name[2] #=> "bar"


この辺の違和感はない。


name.each {|n|

print n,"\n"

}


★結果

hoge

poyo

bar

出た。なんとか.each

慣れると、分かりやすい構文に見えてくるから不思議

ハッシュ

name_tbl = {"hoge" => "man","foo" => "woman"}

p name_tbl["hoge"]

p name_tbl["foo"]


=> という記号に馴染みがありませんが、これも理解しやすい。


name_tbl.each {|key,val|

print key,",",val,"\n"

}


★結果

hoge,man

foo,woman


ハッシュも問題ないですね。


続いて第3章コマンドを作ろう

ファイル入出力

name = ARGV[0]

file = open(name)

text = file.read

print text

file.close


たった5行ですか。簡単に書けるな~。

ARGVコマンドライン引数ですよと。

一行づつ読み込むのであれば、


name = ARGV[0]

file = open(name)

while text = file.gets do

print text

end

file.close


次は第4章。

オブジェクト

Rubyデータは、全てオブジェクトですよと。

数値も文字列も正規表現オブジェクトも、範囲オブジェクトも…。

ここを抑えていれば、表現上の戸惑いも減りそう。

変数

変数は以下のとおりの種類がある。

ローカル変数

⇒先頭が小文字。あるいはアンスコ

②グローバル変数

$始まり

インスタンス変数

⇒@始まり

クラス変数

⇒@@始まり

⑤擬似変数

⇒selfなど決まった名前をもつ


$とか@とか@@とか…

スクリプト言語っぽくなってきた。

定数

大文字始まり。


オブジェクトの同一性

P66のコラムはちょっと大事ですね。

全てのオブジェクトは、object_idアイデンティティを持っていますよと。

2つのオブジェクトが同じかどうかは、equal?メソッドを使う。


str1="foo"

str2="f"+"o"+"o"

str3=str1

p str1.equal?(str2) #=>falseobject_idが異なる)

p str1.equal?(str3) #=>trueobject_idが同じ)

p str1 == str2 #=>true(値が同じ)


このあたりは、Cをやってきていると理解がしやすい。

要するに、変数がさしている先(ポインタ)が同じかどうかってこと。

次は、第5章。

条件判断

unless 条件 then

 文

end


条件が満たさなかったら、文を実行すると。

これは、他にはない構文ですね。

if not 条件 then だけでなく、構文として

こういう書き方をちゃんと用意している。


Rubyは、こういう、ひとつの課題に対する

書き方がいくつか用意されているケースが

多いですね。

便利な反面、初心者は混乱するかも。

まあ、全て使いこなす必要はないか。


今日はここまで!寝よ。

トラックバック - http://rubyist.g.hatena.ne.jp/papanda0806/20060830