PHPerがrubyを使いはじめた -3ページ目

とりあえず・・・・

酔った(*´ェ`*)

それだけじゃまぁアレなんで、話題のChrome使ってみたよ!
速いよ!!
でもメモリ食うよ!!
インストールして使ったばっかなんでそれだけwwww

ま、たまにはこんなブログでもいいかなー。
今週はプログラム書いてる暇ないしなー。
土日に頑張ってみるか遊ぶかは・・・今週は遊ぼうw

ではおやしみ

PHPとRubyのハッシュの違い

PHPで連想配列という言葉はRubyで言うハッシュらしい。

最近はPHPでもハッシュって言ってる人もいるとかいないとか。


ちなみにハッシュってのは通常の配列とは違って、文字列をキーにできる。

て言ってもよくわからんかもしれないので、作ってみせた方が早いかも^^;


ということでキーが国名前で中身が首都のハッシュ。

■PHP

$countries["Japan"]="Tokyo";

$countries["UnitedStates"]="Washington";

$countries["Britain"]="London";

$countries["France"]="Paris";


これをforeachとかでまわすとハッシュを作った順番通り取得できる。

foreach($countries as $key=>$country){
 print $key ." " . $country."<br />";
}


表示結果:

Japan Tokyo
UnitedStates Washington
Britain London
France Paris


■Ruby

countries["Japan"]="Tokyo"
countries["UnitedStates"]="Washington"
countries["Britain"]="London"
countries["France"]="Paris"

これをeachメソッドでまわすと・・・

countries.each do |key, country|

 p key + " " + country

end


表示結果:

"Britain London"
"France Paris"
"Japan Tokyo"
"UnitedStates Washington"


とおわかりの通り、入れた順番じゃない!!><


RubyはHashの作った順番って考えはないみたいなんですな・・・・。

何かキーの文字コード順になってる気がする・・・。


確かにハッシュは名前の順番ってのもわからなくもないんだけどなぁ・・・。

でもなぁ・・・・。


これはPHPとRubyで違うので気をつけましょう。

Flash変数は。。。

■Ruby

今日はrubyだけ。

Flash変数にnowというものがあることをはじめて知った。

こんな感じで使うらしい。


例1)通常のFlash
▼controller:

flash[:error] = "エラー#{flash[:error]}"

▼view:

<p id="error"><%= flash[:error] %></p>

表示結果
1回目:エラー
2回目(F5):エラーエラー
3回目(もいっちょF5):エラーエラーエラー

例2)Nowを使ってみた
▼controller:

flash.now[:error] = "エラー#{flash[:error]}"

▼view:

<p id="error"><%= flash[:error] %></p>

表示結果
1回目:エラー
2回目(F5):エラー
3回目(もいっちょF5):エラー

renderすると変数の値は保持される。flashも例外ではない。
flashのerrorには"エラー#{flash[:error]}"と今までのエラー+エラーって文字列を入れてるから増えるのは当然か。


※ちなみに豆知識

文字列の中で変数を展開する方法はPHPだとこんな感じになる。

■PHP

$fruit="メロン";

print "ボクは $fruit が大好きです";


■Ruby

rubyだとこんな感じ。

fruit="メロン"

p "ボクは#{fruit}が大好きです"


両方ともダブルクォートでくくった中で変数fruitが展開されるのは同じ。

ただ、PHPはダブルクォート内で変数名を書けばいいけど、rubyは#{}でくくらないとだめー。

ちなみに両方ともシングルクォートはできなかったはず。多分。


違ったらおせーてくださいませ。