0
0

More than 1 year has passed since last update.

Progate Ruby 個人的ざっくりまとめ

Posted at

変数名が2語以上の場合は、アンダーバー(_)を挟む

例)your_name

変数展開は(#{変数})の形式

hello = "Hello"
puts "#{hello} World!" # Hello World!

※javascriptの場合

var hello = "Hello";
var text = hello + " World!";
console.log(text); // Hello World!

// または

var text = `${price} World!`;
console.log(text); // Hello World!

※phpの場合

$text = "Hello";
echo "{$text} World!"; // Hello World!

繰り返し処理

each文

形式
配列.each do |変数名|
  実行したい処理
end
languages = ["English", "Japanese", "Chinese"]

languages.each do |language|
  puts language
end
結果
English
Japanese
Chinese

ハッシュ

ハッシュとは、配列のそれぞれの値に「キー」をつけて管理することができる。(連想配列みたいな感じ)

形式
[キー1 => 値1, キー2 => 値2]

ハッシュの要素を用いる場合

user = ["name" => "田中", "age" => 20]
puts user["name"]
結果
田中

ハッシュに要素の追加

形式
ハッシュ[新しいキー] = 値
user = ["name" => "田中", "age" => 20]
user["from"] = "東京"
puts user
結果
["name" => "田中", "age" => 20, "from" => "東京"]

ハッシュの省略

user = ["name" => "田中", "age" => 20]

#↓

user = [:name => "田中", :age => 20]

#または

user = [name: "田中", age: 20]
#この書き方でも、要素を取得する場合シンボルが必要
puts user[:name] 

メソッド

形式
def メソッド名
  処理
end
メソッド名 ←実行
def introduce
  puts "こんにちは"
  puts "私は田中です。"
end
introduce
結果
こんにちは
私は田中です。

引数を受け取るメソッド

def introduce(name)
  puts "こんにちは"
  puts "私は#{name}です。"
end
introduce("田中")
結果
こんにちは
私は田中です。

※引数を受け取るメソッドは、引数を渡さずにメソッドを呼び出すことはできない。(呼び出すとエラーになります)

真偽値を返すメソッド

メソッド名の直後に「?」マークをつけるだけ

def negative?(number)
  return number < 0
end
puts negative?(5)
結果
false

キーワード引数を持つメソッド

def introduce(name:, age:, from:) #引数の後にコロン
  puts "私の名前は#{name}です。"
  puts "年齢は#{age}歳です。"
  puts "出身は#{from}です。"
end
introduce(name: "田中", age: 20, from: "東京")
結果
私の名前は田中です。
年齢は20歳です。
出身は東京です。

クラス

クラスとは、インスタンスを作成する時の「元となる設計図のこと」

形式
class Menu #クラス名の1文字目は必ず大文字
  #処理のまとまり
end

インスタンスの生成

class Menu
  #処理
end

menu1 = Menu.new #Menuクラスからインスタンスを生成し、menu1に代入

attr_accessorメソッド

「attr_accessorメソッド」は、クラスの外からインスタンス変数にアクセスできるメソッド

class Introduce
  attr_accessor :name
  attr_accessor :age

  #initializeメソッドは、インスタンスが生成されたら自動で呼び出される
  def initialize(name:, age:)
    #インスタンスメソッドの中でインスタンス変数を扱うには「self.変数名」とする
    self.name = name
    self.age = age
  end

  def my_info
    return "私の名前は#{self.name}です。年齢は#{self.age}歳です"
  end
end

introduce = Introduce.new(name: "田中", age: 20)
introduce.name = "佐藤" #attr_accessorを使わないと上書きされない
puts introduce.my_info
結果
私の名前は佐藤です。年齢は20歳です。

requireメソッド

「requireメソッド」は、外部ファイルを読み込んでくれるメソッド

index.rb
require "./introduce"

introduce = Introduce.new(name: "田中", age: 20)
puts introduce.my_info
introduce.rb
class Introduce
  attr_accessor :name
  attr_accessor :age

  #initializeメソッドは、インスタンスが生成されたら自動で呼び出される
  def initialize(name:, age:)
    #インスタンスメソッドの中でインスタンス変数を扱うには「self.変数名」とする
    self.name = name
    self.age = age
  end

  def my_info
    return "私の名前は#{self.name}です。年齢は#{self.age}歳です。"
  end
end
結果
私の名前は佐藤です。年齢は20歳です。

クラスの継承

introduce.rbで定義したIntroduceクラスを親クラスとし、hobby.rbで定義したHobbyクラスを子クラスとしている。

※親クラスにあるメソッドと同名のメソッドを子クラスで定義すると、メソッドを上書きすることを「オーバーライド」という。

hobby.rb
require "./introduce"

class Hobby < Introduce #子クラス < 親クラス
  attr_accessor :hobby

  def initialize(name:, price:, hobby:)
    #「super」は、オーバーライドしたメソッドの中で使用でき、親クラスの同名メソッドを呼び出せる
    #親クラスのメソッドの定義に合わせて、superに対して引数を渡す必要がある
    super(name: name, age: age)
    self.hobby = hobby
  end

  def my_info
    return "私の名前は#{self.name}です。年齢は#{self.age}歳です。趣味は#{self.hobby}です。"
  end
end
index.rb
require "./hobby"

introduce = Hobby.new(name: "田中", age: 20, hobby: "サッカー")
puts introduce.my_info
結果
私の名前は佐藤です。年齢は20歳です。趣味はサッカーです。

gets.chomp

「gets.chomp」は、実行するとコンソールが入力待機状態になる

puts "名前を入力してください。"
name = gets.chomp #ここで一旦処理が止まり、入力後に以下の処理が行われる
puts "こんにちは、#{name}さん。"

※数字を入力してもらう場合は、「gets.chomp.to_i」とすることで、文字列ではなく数値として認識させることができる

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