Rubyの基本メモ
初めてRuby on Railsをやってみようと思っています。
まずはRailsチュートリアルから始めようと思いましたが、
その前に基本構文すら知らなかったので、いつでも見れるように簡単にまとめました。
配列と文字列の中での出力
配列を代入する変数名は慣習上、複数形にすることが多い。
names = ["Honda","Fukumoto","Horiuchi"]
puts names
puts "私は#{names[0]}です"
出力結果
Honda
Fukumoto
Horiuchi
私はHondaです
ハッシュ
ハッシュも配列と同じく複数のデータをまとめて持つが、
それぞれのデータにキーをつけることができる。
変数 = { :key1 => 値a, :key2 =>値b}
キーは文字列かシンボルを使うことができるが、一般的にシンボルを使う。
シンボル
シンボルは先頭に:(コロン)をつけた文字列で、普通の文字列よりも処理が高速になる。文字列に通し番号を割り振ることで、裏ではただの整数として管理している感じ。
上の例の:key1は、先頭に:がついているため、シンボル。
if文
if 条件1
処理1
elsif 条件2
処理2
else
処理3
end
繰り返し
while文
num = 1
while num <= 3
puts num
num += 1
end
1
2
3
配列の繰り返しeachメソッド
wdays = ["月","火","水","木","金"]
wdays.each do |wday|
puts wday + "曜日"
end
月曜日
火曜日
水曜日
木曜日
金曜日
.eachはメソッドなので、この時のendはwhile~endみたいにeach~endではない。do~endのブロック。|wday|はブロック変数。
eachメソッドに範囲演算子を組み合わせる
開始値と終了値が決まっている場合に使う。
(1..3).each do
puts "Hello world"
end
Hello world
Hello world
Hello world
####ブロック変数を使ってみると
(1..3).each do|cnt|
puts "Hello world" + cnt.to_s
end
Hello world1
Hello world2
Hello world3
メソッド
def hello
puts "Hello"
puts "World"
end
hello
出力結果
Hello
World
引数、戻り値がある場合
def メソッド名(引数)
処理
return 戻り値
end
クラスの作成
class クラス名
attr_accessor :シンボル名1, :シンボル名2
end
クラスに属性を持たせる
クラスに属性を持たせるには、attr_accessor(アトリビュートアクセサ)メソッドを使う。
attr_accessorメソッドは3つの役割がある。
.名前が@で始まるインスタンス変数を作成する。
attr_accessorメソッドは2つの役割がある。
読み取り専用メソッドを作成する。
書き込み専用メソッドを作成する。
役割的にはセッターゲッターみたいなもの?
また、アクセサメソッドを作成するためのメソッドはattr_accessorメソッドと合わせて以下の3種類ある。
メソッド | 処理 |
---|---|
attr_accessor : 変数名(アトリビュートアクセサ) | 読み取り用と書き込み用の両方のメソッドを作る |
attr_writer :変数名(アトリビュートライター) | 書き込み用メソッドだけを作る |
attr_reader 変数名(アトリビュートリーダー) | 読み取り用メソッドだけを作る |
インスタンスを作ってクラスを利用する方法
newする(newメソッドを使う)
変数 = クラス名.new
変数.属性 = xx
puts 変数.属性
例:Carクラス、属性が色
class Car
attr_accessor :color
end
car = Car.new
car.color = "red"
puts car.color
red
継承
class 新しく作成するクラス < 継承するクラス
例:ApplicationRecordクラスを継承したTaskクラスを作成する
class Task < ApplicationRecord