変数名が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」とすることで、文字列ではなく数値として認識させることができる