Rails Tutorial 4章 まとめ

おはようございます。

最近はrails tutorialに苦戦しながらも取り組み、先ほど4章が終了しました。

ですので、一度このブログ内でまとめようと思います。

文字列

文字列は””で囲み、表示させる。

"example"
=>example

結合は+演算子を使う

"今の首相は" + "麻生さん"
=> 今の首相は麻生さん

文字列を組み立てる方法には式展開というものもある。これには#{}というものを使う。

name = "麻生さん"
"今の首相は#{name}"
=>今の首相は麻生さん

このように#{}は変数を文字列に入れるときに使用します。

シングルクォートの使い方

文字列はダブルクォートかシングルクォートで囲み、表示させます。
しかし、シングルクォーテーションだと式展開ができませんので僕は基本的にはダブルクォートを使います。

シングルクォートは#{}をそのまま表示させたいと言った時に使用します。

オブジェクト

オブジェクトとはメッセージに応答するものです。
例えば、

"basket".legth
=> 6

これはlength(何文字?)というメッセージに”basket”文字列が応答したものです。

同様に

"basket".empty?
=>false

こちらはempty?(空っぽ?)というメッセージに対してfalseと返しています。
true,falseという論理値を返すことを?で表します。

if文でも使われます。

s = ""
if s.empty?
"yes,empty"
else
"nonempty"
end
=>yes,empty"

なお、論理値はそれぞれ&&(かつ),||(または),!(not)でも使われます。

a = ''
b = 'nonempty'
puts "both string empty" if a.empty? && b.empty?
=>nil
puts "one of the string empty" if a.empty? || b.empty?
=> "both string empty"
puts b if !b.empty?

なお、上記の文は全てif文が後ろに来てますよね。
trueの処理しか書かない場合、このようにif文を後ろに書くことが可能になります。

次に数字を文字列に変換する方法です。
変換するには”to_s”を使います。

b = 1
puts b
=> 1
b.to_s
puts b
=> "1"

メソッド

メソッドは引数があることが大前提のように思ってましたが、なくても良いらしいです。

def string_message(str = '')
if str.empty?
puts "empty"
else
puts "nonempty"
end
end
$ string_massage
=>"empty"

このように引数を指定しなくてもエラーが出ません。
なぜかと言いますと、メソッドを定義した段階でデフォルト値を含めているからです。(str = ”)
これを定義したことによって引数が渡されなかった場合はデフォルト値が渡されるようになります。

また、rubyでは一度値を返したらその後の値は表示されません。

def string_message(str = '')
return "empty" if str.empty?
return "nonempty"
end

上の関数の場合、2行目はご存知if文ですね。strが空っぽだったらtrueで”empty”が返されます。その場合もう値を返したので3行目のnonemptyは表示されません。
次に2行目がfalseだった場合、”empty”は返されません。
また、まだ一度も値を返していないので3行目に”nonempt”を返すことができます。

このようにif文は書き直すことができます。

配列と範囲

split >>>文字列を区切り表示させます。

a = "asou tarou"
a.split(' ')
=> "asou" "tarou"

次に配列です。配列は特定の順序をもつ要素のリストです。

name = ["太郎", "二郎", "三郎"]
$ name
=>["太郎", "二郎", "三郎"]

インデックスを付けることによって特定の要素だけを取り出すことができます。

$ name[0]
=> "太郎"

配列の追加にはpushメソッドを使います。

name.push = "四郎"
$name[3]
=> "四郎"

to_aメソッドは範囲を配列に変換できます。

$ 0..9 #0~9の範囲
=>0..9
$ (0..9).to_a #配列に変換
=>[0,1,2,3,4,5,6,7,8,9]

mapメソッドは渡されたブロックを配列や範囲オブジェクトに適用し、結果を返す。

(1..5).map{|i| i ** 2}
=>[1, 4, 9, 16, 25]

これは1~5の数字をそれぞれ二乗して新しく配列に入れています。

ハッシュとシンボル

ハッシュは配列と似ていますがインデックスとして整数値以外も呼び出せるのが異なる点です。

president = {"first_name" => "tarou", "last_name" => "asou"}
president[:first_name]
=>"tarou"

このようにハッシュは要素を{}で囲み、その中にキーと対応する値をかきます。
また、railsでは文字列よりもシンボルが主流だそうです。
シンボルとはクォートのかわりに先頭に「:」を付けることです。

先ほどの文は次のように直せます。

president = {:first_name => "tarou", :last_name => "asou"}
president[:first_name]
=>"tarou"

また、:キー => とキー:は等価であるため、

president = {first_name: "tarou", last_name: "asou"}
president[:first_name]
=>"tarou"

と表記することも可能です。

また、ハッシュの値にはなんでも使うことが出来、他のハッシュを使うことも可能です。

params = {}
params[:user] = {:name => "asou" :gender => "man"}
params[:user][:name]
=>"asou"

また、ハッシュもeachメソッドに対応します。

profile = {}
profile = {name: "asou", gender: "man", age: "22"}
profile.each do |key, value|
puts "私の#{key}は#{value}です"
end

このようにハッシュでeach文を作る場合はキーと値の二つの変数を渡すことを注意してください。

クラスの作成

最後にクラスの作成します。

class User
attr_accessor :name, :email
def initialize(attributes = {})
@name = attributes[:name]
@email = attributes[:email]
end
def formatted_email
"#{@name}>#{@email}"
end
end

attr_accessor・・・こちらはname,email属性(attributes)にそれぞれ対応したアクセサーを作成します。
次のinitializeメソッドは新たにインスタンスを作成した時に自動で呼び出されるメソッドです。
attributesのそれぞれのキーに対応する値を@name,@email変数に代入します。
変数の頭に@を付けることでビューでも使用可能になります。

最後のformatted_emailは式展開が使われていますね。

今日は以上です。
最後まで見てくださった方々ありがとうございました。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です