Rails tutorialの第4章を終えました。
その時の気づいたこととか備忘録です。
今回は文字列、配列とハッシュについて
前回はこちらです
【Rails】カスタムヘルパーについて_Railsチュートリアル 4章より - On_The_Backs_Of_The_Flyer
0.準備として
本番リリース以外は
基本的にはマスターブランチはいじらずに
トピックブランチを作るなど
別ブランチで作業をします。
$ git checkout -b rails-flavored-ruby
文字列とメソッド
文字列の操作について、簡単なものであればRails consoleで簡単に見ることができます。
Rails consolの起動は下記コマンドです。
$ rails c
Railsチュートリアルでは文字列の操作について膨大に紹介がありましたが、
ここでは見落としそうな点をいくつかpick upすることにします。
文字列操作
コメント
今更ながらRuby,Railsのコメントは#
です。(コメントは言語によって方言があるため念の為)
エスケープについて
文字列を囲むときは、式機能が効かないなどのトラブルを避けるためにダブルクオートが基本
シングルクォートは、¥n
や¥t
といった文字をエスケープせずに「そのまま」保持するときに。
条件について
if文の条件についてひっかけ問題なもので
nil.nil?
とすればnilというオブジェクトはnilか?
Javaではあまり見かけない表現として
puts "x is not empty" if !x.empty?
とすれば、ifの後続がtrueの場合のみ前を実施する。
なおif
をunless
にしても同等です。
!!nil
nilを論理値に変換しfalseになります
配列について
配列の操作についての簡易的なメモと使い方の例です。
文字列→配列
split
split
メソッドで文字列→配列
a = "fooxbarxbaz".split('x')
文字列"fooxbarxbaz"をxを区切りに配列に分けれます
a =["foo", "bar", "baz"]
%w
%wでも同様に配列にできます。
a = %w[foo bar baz quux]
配列→文字列
joinメソッドで配列→文字列
a配列がある場合、
a.join(', ')
a配列を連結した文字列になる。,を引数にすることでカンマ区切りになります。
配列操作
配列の取り出し(基本)
a=[42, 8, 17]
という配列を考えます。
8を取り出しだし文字列にするには配列の2番目-1ということで、s = a[1]
で取り出せます。
17の場合s = a[2]
でも取り出せますが
s = a[-1]
と最後から数えた1番目で取り出すこともできます。
またrubyではa.first
,a.second
,a.last
といった英単語を使用することもできます
sortと破壊的メソッド
s= a.sort
とすることでa配列のソートされた配列がsに代入されます。ただしa配列自体は変更されません
s= a.sort!
と!をつけることでa配列自体もソートされます(破壊的メソッド)
配列の最後に要素の追加
a.push(6)
かa << 7
とするとa配列の最後に要素を追加されます
またa.push(6).push(8)
とかa << "foo" << "bar"
とすると、連続で追加することもできます
ハッシュ(連想配列map,list)
文字列をキーにする
ハッシュの作成を考えます。文字列をキーにする場合、
user = { "first_name" => "Michael", "last_name" => "Hartl" }
とすることで
キー | 値 |
---|---|
first_name | Michael |
last_name | Hartl |
というハッシュが作成され、文字列"first_name"をキーに”Michael”を取り出せます。
"first_name".split('')とすると取り出せます。
ハッシュの操作
シンボルをキーに
'params' というハッシュを定義します。
params = {}
シンボルuserにname,emailを突っ込みます
params[:user] = { name: "Michael Hartl", email: "mhartl@example.com" }
こうすることで |キー|キー|値| |-|-|-| |user|name|Michael Hartl|mhartl@example.com| |user|email|Michael Hartl|mhartl@example.com|
という具合にuser
というキーの中にname
,email
のキーをもつハッシュができます
userのemailを取り出したいときは
params[:user][:email]
とすることで取り出せます。
inspect
inspectメソッドを使うと、要求されたオブジェクトを表現する文字列を返却します
flash = { success: "It worked!", danger: "It failed." } flash.each do |key, value| puts "Key #{key.inspect} has value #{value.inspect}" end Key :success has value "It worked!" Key :danger has value "It failed."
上記の例ではハッシュのキーをそのまま出力しています。文字列の場合は""をつけて返却します。
参照
記事を作成する際の大いに参考になりました。ありがとうございます。