見出し画像

Ruby備忘録

勉強しながらメモしたことをそのまま記述しています。


・出力
put "Hello World"
puts "#{}"

・文字列
""か''

・コメント
#

・変数
適当に作れる

・変数展開
puts "#{age}歳です"

ダブルクォーテーションで囲むと変数展開できる
シングルクォーテーションで囲むと文字列がそのまま表示できる

・条件分岐
if hoge > 0
puts "hoge"
elsif hoge < 0
puts "hoge"
else
puts "hoge"
end
60
trueとfalseがある


配列
["a","b","c"]
[1,2,3]

・繰り返し
配列.each do |変数名|
#実行したい処理
end

・ハッシュ
A={"a"=>1,"b"=>2,"c"=>3}

アクセス
A["a"]

なかった場合は新しく作られる

・ハッシュの別の書き方
前コロン
前コロンだと矢印が必要
A={:a => 1,:b=>2,:c=>3}

シンボルという書き方

もちろん使うときもコロンでなけらばならない

・さらに省略したハッシュの書き方
後コロン
後コロンだと矢印がいらない
A={a:1,b:2}

でも使うときは前コロン
頭がこんがらコロンって感じ!(うまい)

・なにもない
nil

・ハッシュの配列
exams = {
{subject: "Math", score: 80},
{subject: "Science", score: 55}
}

exam = exams[1]
exam[:score]

配列内のオブジェクトの要素の値を使用するには1ステップ必要
というわけでもない。

exams[1][:score]
の形で代用可能

・配列とハッシュを使ったときのeach
users.each do |user|
puts user[:name]
end

・メソッド
def メソッド名
処理
end

def メソッド名(引数1,引数2)
処理
return 1
end

引数を渡さないといけない関数で渡してないとエラー

関数で真偽値を返す場合は以下のようにしなければならない
def a?(b)
return b < 0
end

puts a?(5)
これの結果はfalseになる


・キーワード引数※重要

def introduce(name:, age:, food:)
puts "私は#{name}です"
puts "年齢は#{name}歳です"
puts "好きな食べ物は#{food}です"
end
introduce(name:"にんじゃわんこ",age:14,food:"ラーメン")

・クラス
class Menu
attr_accessor :name
attr_accessor :price

def show
puts "私はメニューです"
end
end

attr_accessor メンバであることを明示
:name :price インスタンス変数

・インスタンス化
menu1 = Menu.new

menu1.namae = "すし"

newは必ず小文字にすること!


・クラス内でメンバ変数を使うとき
self.name
thisと間違えやすいから注意!

・クラスの特別な関数
def initialize
ここはインスタンス生成時に必ず通る
end

def initialize(name;,price:)ここは後コロン
ここはインスタンス生成時に必ず通る
ちなみにname,priceでアクセスするここはコロンなし
end

Menu.new(name:"a",1)ここも後コロン


・require "./menu"

menu.rbの読み込みができる

・++とか--は使えない

・入力を扱う
gets.chomp

これはエンターキーが押されるまで入力を受け付ける
gets.chomp.to_i

これは入力値を数値にする

・継承方法
require "./menu"

class Food < Menu
end
これはメニューを継承した食べ物を表す


・オーバーライドで関数を上書きできる

・super
superは別にinitialize以外のところでも使える
名前の被った親のメソッドと同名のメソッドで呼び出すことでそっちの関数を呼び出せる優れもの

・日付を扱う
require "date"

※./dateでない点注意!

date1 = Date.new(2014,7,31)
puts date1

2014-07-31

曜日チェック
date1.sunday?

今日の日付を取得
Date.today

クラスから呼び出すメソッドをクラスメソッド
インスタンスがなくても呼び出せる
def Menu.is_discount_day?
end


この記事が気に入ったらサポートをしてみませんか?