初投稿とProgateのRuby学習コースまとめなど

初めてのはてなブログ

その日にやったことや悩み、

分かったことを纏める場所が欲しくて開設。

★ProgateのRuby学習コース

1・基本

・「print」のイメージが強すぎて「puts」に驚いた。

・#だけでコメントアウト

・文字列、数字、四則演算

・#{変数名}で文字列に含めることができる

・見た目の衝撃度が高かった「elsif」



2・配列

・配列は奥深くまだ理解できたとは言えない。

・ハッシュ、シンボルとキーもまだ理解できていない気がする。

 後で深く調べる必要がありそう。

・仕事でnullはよく使っているので馴染みがあるけどnilは初見だった

 どちらも「空」だと思うがnilである意味があるかが気になる

・1回目はかなり悩んだこともわかるようになっていて成長を感じた。



3・メソッド、引数

Railsを何とか学んだ後なのでメソッドはかなり馴染みやすくなった



def メソッド名

 処理

end

メソッド名で呼び出し


・引数もどうしてもややこしくまだ理解しているとは言えない。

・初歩のうちはそこまでなのかもしれないが、

 もう少し高度な内容になった際にスコープについて気をつけないと

 思わず間違ってしまいそうなので注意。

・真偽値をreturnする場合はメソッド名の末尾に「?」

※当然、メソッド名は「?」も入れてメソッド名なので要注意!!



4・クラスとインスタンス、実際に作る

クラス:設計図 インスタンス:もの

→クラス(設計図)を基にインスタンス(もの)を作る


step1:クラスの用意

 ・クラス名は大文字で始める

 ・空の設計図に「情報」を追記する

  →attr_accessorシンボルを使いインスタンス変数を定義できる

step2:クラスからインスタンスを生成

 ・step1をもとに新しくインスタンスを生成する→クラス名.new

step3:インスタンスに情報を追加

 ・step2の時点ではインスタンスが空

 →インスタンス変数に値を代入することで「情報」を持たせることができる

  (インスタンス.変数名=値 例:Penguin.name="ピちゃん")

 ・インスタンス変数を用いたい場合は「インスタンス.変数名」


→initializeメソッド:step2step3をまとめてできる

インスタンスを生成すると同時にインスタンス変数に値を代入。

引数を渡すこともできる。

 class Animal

  attr_accessor :character

    def initialize(character:)

     self.character = character

    end

 end

character1=Animal.new(character:"ペンギン")


インスタンスメソッド

・クラスの中でメソッドを定義
インスタンスに対し使うように呼び出す

・メソッドなので引数、戻り値などを使用できる

インスタンスメソッド中では「self.変数名」
とすることでインスタンス変数を扱える

 class Penguin

   attr_accessor :name

   def introduce

     puts "名前は#{self.name}です"

   end
 
 end


・ファイルの分割(require)

・クラスから生成したインスタンスは配列の要素にできる。

例:introduce1=Animal.new(name:"ぺん",age:10)

  introduce2=Animal.new(name:"ビョン",age:6)

  introduces=[introduce1,introduce2]

・コンソールで入力した内容を受け取る→gets.chomp(変数.gets.chompの形)

※gets.chompで入力された値は文字列!

 なので数値にする場合は「gets.chomp.to_i」(to int?)

・配列と関数、引数が混ざるとまだ簡単に定義ができていない。



5・継承、オーバーライド、クラスメソッド

●継承

内容:あるクラスを基に新たなクラスを作る

書き方:class 子クラス <親クラス

例:親クラス)Animalクラス → 子クラス)Penguinクラス、Rabbitクラス…など

子クラスに継承されるもの:親クラスのインスタンス変数、インスタンスメソッド

当然、継承したもの以外にも子クラスで独自に

インスタンス変数、インスタンスメソッドを作ることもできる。


●オーバーライド

内容:親クラスにあるメソッドと「同じ名前」で子クラスで定義すると上書きされる。

→子クラスで定義したメソッドが実行される

・initializeメソッドも同様に使用でき、オーバーライドすることが可能。

・オーバーライドしたメソッドで重複している場合は

 メソッド中でsuperを使用しメソッドの呼び出しが可能。


・日付はDateクラス

読み込み方:require "date"

・他と同様に「Date.new」でインスタンスが生成できる

Rubyが元から用意しているクラス。クラスメソッドの中でも使える

インスタンスメソッドも用意されている(曜日判定など)


●クラスメソッド

内容:クラス名に対し、メソッドを呼び出す

呼び出し方:クラス名.メソッド名

例:Animal.is_small?(Animalがクラス名、is_small?がメソッド名)

・クラスの中でも使える




インスタンスメソッドとクラスメソッドの違い

インスタンスメソッド 

class Animal

  def introduce⇦インスタンスメソッドの定義

  end

 end

  animal1=Animal.new   ⇦インスタンス

  animal1.introduce   →インスタンスに対し呼び出す

・クラスメソッド

class Animal

  def Animal.is_cute?   ⇦クラスメソッドの定義

  end

 end

  Animal.is_cute?   →クラスに対し呼び出す


調べること、復習すべきこと

・文字列の結合ってどんな場面で使えるのかが気になる。

・シンボル、配列

・クラスからの範囲は理解を深めたい



★Web技術関係の本

★データベース関係の本

どちらも基本情報の時も学んだ内容もあるが、より深く理解できて楽しい。