この記事の目的
いくつかの言語を勉強しているとrubyのときは配列どうだったっけ?とか迷うことがあるのでそれらをすぐに思い出すためのシート
命名
- クラス名、モジュール名・・・単語のはじめを大文字で始める(パスカルケース)
- メソッド名・・・単語は小文字ではじめ単語の間は_を用いる(スネークケース)
- 変数名・・・単語は小文字ではじめ単語の間は_を用いる
- 真偽を表すメソッド名・・・真偽値を返すメソッド名は?で終わる
- 定数・・・アルファベット大文字のみで書く(スクリーミングスネークケース)
- 破壊的メソッド・・・破壊的でない同名のメソッドがある場合,破壊的メソッド名は!で終わる
出力
puts
# 引数を標準出力。出力の後に改行される。
print
# 引数を標準出力。改行はされない!
p
# 引数の内容を詳しく標準出力。改行される。文字列であれば””で囲まれていて、数値はそのまま出力される。
pp
# pと同様の標準出力。出力される内容が、適切なインデントと改行で整形されている。pだと、改行などがないから見にくくなる。
%()記法
「Rubyで%記法(パーセント記法)を使う」
https://qiita.com/mogulla3/items/46bb876391be07921743
コードブロック
rubyでは
- do...end
- {...}
でブロックを区切る。
改行
基本的にはrubyは式と式を改行で区切ります。しかし、;で1行で表すこともできます。
name = 'ruby';puts(name.updase)
コメントアウト
# コメント
# --1行コメントは「#」のあとに書く
=begin
コメント
=end
# -- 「=begin」から「=end」の間がコメントになる
__END__
# -- この行以降すべてがコメントになる
# 変数
```ruby:例
rei = "例"
=でつなぐだけ。変数を展開する場合は下記のように書く
word = "world"
puts "hello,#{word}"
ローカル変数
上記の変数で下記の場合のみ効く非常に狭い範囲の変数。
- ブロック
- メソッド定義
- クラス/モジュール定義
- トップレベル
グローバル変数
$rei = "例"
$を変数名の先頭につけるとどこからでも参照できるようになる。
定数
REI = "例"
全部大文字で書くと定数になり、一度しか代入できなくなります。つまり値を変更したくないときに使うものです。
多重代入
a,b = 1,2
a => 1
b => 2
# 余った場合は無視
a,b = 1,2,3
a => 1
b => 2
# 配列の代入
a,*b = [1,2,3]
a => 1
b => [2,3]
メソッド
def say(name)
puts "Hi #{name}"
end
say("tarou")
詳しくは
https://qiita.com/you88/items/a3a6e972d6f3b87edbcb
条件分岐
if文
if n = 1
puts "nは1です"
else
puts "nは1じゃないです"
end
unless n = 1
puts "nは1じゃないです"
else
puts "nは1です"
end
unlessはelsifを使えない。
case文
case signal
when "red"
puts "stop"
when "green","blue"
puts "go"
else
puts "go"
end
詳しくはこちら
https://qiita.com/you88/items/5744a26eb2db8839a644
配列(Array)
colors = ["red","white"]
puts colors[1]
=> "white"
# 配列の追加
animals = ["dog", "cat", "mouse"]
animals << "pig"
p animals
=> ["dog", "cat", "mouse", "pig"]
詳しくは
https://qiita.com/you88/items/83d694d223461df7a068
ハッシュ(連想配列)の書き方
# キーが文字列の場合の配列
users = {"name" => "yohei","age" => 20}
# キーをシンボルにする
users = {:name => "yohei",:age => 20}
# シンボルの省略形
users = {name: "yohei", age: 20}
詳しくは
https://qiita.com/you88/items/0c78a310c836741c3c93
each
オブジェクト.each do |変数|
end
オブジェクト.each {|変数|
}
classの継承
class Parent
end
class Child < Parent
def ababa
end
end
その他の豆知識
a ||= true
# 左辺が未定義、もしくはfalseなら代入。||はorの意味なのでもしくは代入の意味。
def logged_in?
!!session[:user_id]
end
# !!はメソッドの返り値をtrue,falseに変える。今回はsessionがあるかないかを聞くメソッドであればtrue、なければfalseを返す