初投稿とProgateのRuby学習コースまとめなど
初めてのはてなブログ!
その日にやったことや悩み、
分かったことを纏める場所が欲しくて開設。
★ProgateのRuby学習コース
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技術関係の本
★データベース関係の本
どちらも基本情報の時も学んだ内容もあるが、より深く理解できて楽しい。