0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

railsチュートリアル 第4章 titleヘルパー、再び

Posted at

####titleヘルパー、再び

module ApplicationHelper

  # ページごとの完全なタイトルを返します。                   # コメント行
  def full_title(page_title = '')                     # メソッド定義とオプション引数
    base_title = "Ruby on Rails Tutorial Sample App"  # 変数への代入
    if page_title.empty?                              # 論理値テスト
      base_title                                      # 暗黙の戻り値
    else
      page_title + " | " + base_title                 # 文字列の結合
    end
  end
end

コメントをつけてみた。
Webサイトのレイアウトで使うコンパクトなヘルパーメソッドでは、Rubyの様々な要素が投入される。
モジュールは、関連したメソッドをまとめる方法

###他のデータ構造
Railsアプリケーションを書くために重要となる、いくつかのRubyのデータ構造について説明
####配列と範囲演算子
配列(array)は、特定の順序を持つ要素のリスト
配列を理解することは、ハッシュ(4.3.3)やRailsのデータモデルを理解するための重要な基盤
#####配列

>>  "foo bar     baz".split     # 文字列を3つの要素を持つ配列に分割する
=> ["foo", "bar", "baz"]

#####split

>> "fooxbarxbaz".split('x')
=> ["foo", "bar", "baz"]

#####ゼロオリジン
これは、配列の最初の要素のインデックスが0から始まり、2番目は1...と続くことを意味

>> a = [42, 8, 17]
=> [42, 8, 17]
>> a[0]               # Rubyでは角カッコで配列にアクセスする
=> 42
>> a[1]
=> 8
>> a[2]
=> 17
>> a[-1]              # 配列の添字はマイナスにもなれる!
=> 17
>> a                  # 配列「a」の内容を確認する
=> [42, 8, 17]
>> a.first
=> 42
>> a.second
=> 8
>> a.last
=> 17
>> a.last == a[-1]    # == を使って比較する
=> true

#####==

>> x = a.length       # 配列も文字列と同様lengthメソッドに応答する
=> 3
>> x == 3
=> true
>> x == 1
=> false
>> x != 1
=> true
>> x >= 1
=> true
>> x < 1
=> false

#####様々なメソッド

>> a
=> [42, 8, 17]
>> a.empty?
=> false
>> a.include?(42)
=> true
>> a.sort
=> [8, 17, 42]
>> a.reverse
=> [17, 8, 42]
>> a.shuffle
=> [17, 42, 8]
>> a
=> [42, 8, 17]

#####破壊的メソッド!

>> a
=> [42, 8, 17]
>> a.sort!
=> [8, 17, 42]
>> a
=> [8, 17, 42]

#####配列に要素追加 push

>> a.push(6)                  # 6を配列に追加する
=> [42, 8, 17, 6]
>> a << 7                     # 7を配列に追加する
=> [42, 8, 17, 6, 7]
>> a << "foo" << "bar"        # 配列に連続して追加する
=> [42, 8, 17, 6, 7, "foo", "bar"]

#####join 繋げる split 分ける

>> a
=> [42, 8, 17, 6, 7, "foo", "bar"]
>> a.join                       # 単純に連結する
=> "4281767foobar"
>> a.join(', ')                 # カンマ+スペースを使って連結する
=> "42, 8, 17, 6, 7, foo, bar"

#####range 範囲 to_a 配列に変換

>> 0..9
=> 0..9
>> 0..9.to_a              # おっと、9に対してto_aを呼んでしまっていますね
NoMethodError: undefined method `to_a' for 9:Fixnum
>> (0..9).to_a            # 丸カッコを使い、範囲オブジェクトに対してto_aを呼びましょう
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

0..9 は範囲として有効ですが、上の2番目の表記ではメソッドを呼ぶ際にカッコを追加する必要
######取り出す

>> a = %w[foo bar baz quux]         # %wを使って文字列の配列に変換
=> ["foo", "bar", "baz", "quux"]
>> a[0..2]# 範囲を指定して取り出す
=> ["foo", "bar", "baz"]

#####範囲の可変

>> a = (0..9).to_a
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>> a[2..(a.length-1)]               # 明示的に配列の長さを使って選択
=> [2, 3, 4, 5, 6, 7, 8, 9]
>> a[2..-1]                         # 添字に-1を使って選択
=> [2, 3, 4, 5, 6, 7, 8, 9]

######こんなことができる

>> ('a'..'e').to_a
=> ["a", "b", "c", "d", "e"]

####演習
1.文字列を分解し、配列にしろ。

> a = "A man, a plan, a canal, Panama"
=> "A man, a plan, a canal, Panama"
>> b = a.split(",")
=> ["A man", " a plan", " a canal", " Panama"]

2.分解した文字列をまたつなぎ合わせろ。

>> s = b.join
=> "A man a plan a canal Panama"

3.分割、連結のあと回文かどうかを調べる。

>> s = a.split(" ").join
=> "A man a plan a canal Panama"
>> a == s.downcase
=> false

4.配列を作成し、7番目の要素を取り出せ。

>> ('a'..'z').to_a[6]
=> "g"
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?