【Ruby】クラスとインスタンス 指定した文字列を表示したい!

class Article

 

  def initialize(author, title, content)

    @author = author

    @title = title

    @content = content

  end

end

 

↑上記コードに書き足しをして、

 

著者: 阿部

タイトル: Rubyの素晴らしさについて

本文: Awesome Ruby!

 

と出力されるようにしたい!

 

【模範解答】

 

class Article

 

  def initialize(author, title, content)

    @author = author

    @title = title

    @content = content

  end

 

  def author

    @author

  end

 

  def title

    @title

  end

 

  def content

    @content

  end

 

end

 

article = Article.new("阿部", "Rubyの素晴らしさについて", "Awesome Ruby!")

puts "著者: #{article.author}"

puts "タイトル: #{article.title}"

puts "本文: #{article.content}"

 

【自分への説明】

①出力について…

puts "文字列"

と入力すると出力させることができる。

 

例えば、任意のhello.rbというファイルに

puts "Hello World!!"

と入力し、該当するディレクトリで

ruby hello.rb

と入力すると

ターミナル上で

Hello World!!

と出力される。

 

②article = Article.new("阿部", "Rubyの素晴らしさについて", "Awesome Ruby!")

上記コードは、Article.newでインスタンスを生成し、変数articleに代入している。

その際に、阿部、Rubyの素晴らしさについて、Awesome Ruby!3つ実引数を指定する。

※ここでは、"阿部", "Rubyの素晴らしさについて", "Awesome Ruby!"が実引数

 

③initializeメソッドについて

initializeメソッドとは、インスタンスが生成された瞬間に、生成されたそのインスタンスが実行する処理を定義するインスタンスメソッド。

Rubyのクラスから生成されるすべてのインスタンスにはこのinitializeメソッドが用意されており、クラスに何も記述しなくてもinitializeメソッドは自動で実行されている。この場合のinitializeメソッドは基本的に何も処理は行わない。

問題解説に戻ると…

ここでは、initializeメソッドを定義して、インスタンス変数を宣言した。実引数として指定した値を、仮引数のauthor titlecontentにそれぞれ渡している。

そうすることにより、initializeメソッドで宣言されたインスタンス変数に、阿部、Rubyの素晴らしさについて、Awesome Ruby!という3つの値が代入される。

    @author = author(阿部)

    @title = title(Rubyの素晴らしさについて)

    @content = content(Awesome Ruby!)

↑こんなイメージ?

 

def author

    @author

  end

 

  def title

    @title

  end

 

  def content

    @content

  end

 

end

この部分で、上記インスタンス変数の値を返すための専用のメソッドをそれぞれ定義している。

 

⑤最後に

puts "著者: #{article.author}"

puts "タイトル: #{article.title}"

puts "本文: #{article.content}"

上記のコードで、先ほど定義づけたメソッドを呼び出している。

【Git Hub】pullとclone

pullもcloneもリモートリポジトリから、ローカルリポジトリに反映すること。

 

pull → ローカルリポジトリとリモートリポジトリが紐づいている

(開発中何回も行うことが多い)

clone → ローカルリポジトリとリモートリポジトリが紐づいていない

ネット上にリモートリポジトリが存在し、それを参考にしたいとき、それを真            似て制作をしたいときに使う

(開発中1回だけ行う)

 

という違いがある。

 

push → 紐づいていて初めてできることである。

 

100%の理解はできていない。

今後学習を進めていく中で慣れていくというアドバイスもいただいたので、学習を進めるにあたってどうしようもなく理解できなかった際にまた確認する。

【Ruby】2重ハッシュから取り出す

user_data = [

 {user: {profile: {name: 'George'}}},

 {user: {profile: {name: 'Alice'}}},

 {user: {profile: {name: 'Taro'}}},

]

 

から、George,Alice,Taroを取り出したい!

 

解答

user_date.each do |u|

puts u[:user][:profile][:name]

end

 

ハッシュから何か情報を取り出したいとき、

ハッシュ[取得したい値のキー] で取得ができる。

 

2重ハッシュの場合は、連続して取得したいキーのところまで指定すると取得できる

例:ハッシュ[:user][:profile][:name]

※ここでは、nameを取得したいので、その前のuser,profileから連続して指定している。

 

補足

○each文について

eachとは、配列やハッシュの要素11つに対して、要素の数だけ繰り返し処理が行えるメソッド。

 

[配列 or ハッシュ].each do | [変数] |

  # 処理

end

 

と入力する。

 

 

【Ruby】変数hashを作成する

例えば、

puts hush.keys

puts hush.values

と実行した際に、

 

one

two

three

1

2

3

 

と出力されるようにしたい!

 

解答としては

  hash = { one:1, two:2, three:3 } ※hashを生成している。

となる。

 

ここでいう、「one」の部分を「キー」

       「1」の部分を「値」と呼ぶ

オブジェクト.keysで「キー」取得

オブジェクト.valuesで「値」を取得

 

関係のある複数の値を管理するときにhashを生成し管理しやすくする。