####ユーザークラス
class User
attr_accessor :name, :email
def initialize(attributes = {})
@name = attributes[:name]
@email = attributes[:email]
end
end
attr_accessor :name, :email
ユーザー名とメールアドレス(属性: attribute)に対応するアクセサー(accessor) をそれぞれ作成
アクセサーを作成すると、そのデータを取り出すメソッド(getter)と、データに代入するメソッド(setter)をそれぞれ定義
インスタンス変数は常に@記号で始まり、まだ定義されていなければ値がnil
initializeは、Rubyの特殊なメソッドです。これは User.newを実行すると自動的に呼び出されるメソッド
def initialize(attributes = {})
@name = attributes[:name]
@email = attributes[:email]
end
attributes変数は空のハッシュをデフォルトの値として持つため、名前やメールアドレスのないユーザーを作ることができます
def formatted_email
"#{@name} <#{@email}>"
end
このメソッドは、文字列の式展開を利用して、@nameと@emailに割り当てられた値をユーザーのメールアドレスとして構成
requireして、自作したクラスを試しに使ってみましょう。
>> require './example_user'
=> true
>> example = User.new
=> #<User:0x00007f410082a2b0 @name=nil, @email=nil>
>> example.name
=> nil
>> example.name = "Example User"
=> "Example User"
>> example.email = "user@example.com"
=> "user@example.com"
>> example.formatted_email
=> "Example User <user@example.com>"
require './example_user'
requireのパスにある’.’は、Unixの “カレントディレクトリ”
’./example_user’というパスは、カレントディレクトリからの相対パスでexample_userファイルを探すように指示
example = User.new
次のコードでは空のexample_userを作成します
####演習
1.クラスを作成
class User
attr_accessor :first_name, :last_name, :email
def initialize(attributes = {})
@first_name = attributes[:first_name]
@last_name = attributes[:last_name]
@email = attributes[:email]
end
def full_name
"#{@first_name} #{@last_name}"
end
def formatted_email
"full_name <#{@email}>"
end
def alphabetical_name
"#{@last_name}, #{@first_name}"
end
end
2.alphabetitcal_name
メソッドを作成
def alphabetical_name
"#{@last_name}, #{@first_name}"
end
3.full_name.split
とalphabetical_name.split(', ').reverse
の結果を確認
>> user.full_name.split
=> ["Michael", "Hartl"]
>> user.alphabetical_name.split(', ').reverse
=> ["Michael", "Hartl"]
同じになった。