Ruby Silver 学習メモ【2021年11月受験】

Ruby

Ruby Silver受験するにあたり、ややこしいメソッドがいっぱいあり、なかなか覚えられないので、アウトプット目的で本記事に残します。

予約語

nil, true, false, not, or, and
BEGIN, END, begin, end, do, then, yield, rescue, ensure
class, module, def, defined?, alias, undef, super, self, return
while, until, for, in, break, next, redo, retry,
case, when, if, unless, else, elsif,
__LINE__, __FILE__, __ENCODING__

数値リテラル

2進数 binary       0b 0b10 => 2
8進数 octal 0oまたは0  0o10    => 8
10進数 decimal      0d 0d10 => 10
16進数 hexadecimal    0x 0x10 => 16

「?」+文字リテラル

?A => "A"          #String
?\C-v => "\u0016"  #Ctrl+vを表すString
?\M-a => "\xE1"    #Alt+aを表すString
?\n => "\n"        #改行を表すString

Rangeクラス

(1..5) => 5を含める
(1...5) => 5を含まない

演算子

|| 演算子 (論理和/または)

a と b がどちらかが真のとき、最初に評価された a を出力する
・左辺が true の場合、右辺は実行しない
・左辺が false の場合、右辺は実行する

&& 演算子 (論理積/かつ)

a と b がどちらも真のとき、最後に評価された b を出力する
・左辺が true の場合、右辺は実行する
・左辺が false の場合、右辺は実行しない

例題

true || 2   # => true
false || 2  # => 2

true && 2   # => 2
false && 2  # => false

条件式が複数ある三項演算子

条件式1 ? 条件式2 ? "A" : "B" : "C"
=
条件式1 ? (条件式2 ? "A" : "B" ): "C"
こうすると見やすい
条件式1条件式2出力
truetrueA
truefalseB
falsefalseC
falsetrueC
a = [1, 2, 3, 5, 8]
b = [1, 3, 6, 7, 8]
c = false || true ? true && false ? a | b : a & b : b ;

c = false || true ? (true && false ? a | b : a & b ): b ;
#()の条件式2から
# true && false => false
# a | b => [1, 2, 3, 5, 6, 7, 8]
# a & b => [1, 3, 8]
#false ? a | b : a & b => a & b => [1, 3, 8]

# 条件式1
# false || true => true
# true ? a & b : b => [1, 3, 8]

Overrideできない演算子

・代入演算子(自己代入を含む) = +=
・論理演算子 && || and or not
・スコープ演算子  ::
・範囲演算子 .. …
・条件演算子 ?:

優先度

高>>>>>>>低
+ == ||

%を使ったString

p %(a b c)  # => "a b c"
p %W(a b c) # => ["a", "b", "c"]
p %s(a)     # => :a

ファイル操作関連

r読み込み
w書き込み既存ファイルの場合はファイルの内容が空になる
a追記追加位置はファイルの末尾
r+読み書きファイルの読み書き位置は先頭
w+読み書き既存ファイルの場合はファイルの内容が空になる
a+読み書きファイルの読み込み位置は先頭、書き込み位置は末尾

Arrayオブジェクト

popselfの末尾より1要素を取り出す(LIFO)。
pushselfの末尾に引数の値を追加する(LIFO)。
unshiftselfの先頭へ引数の値を追加する(FIFO)。引数が指定されていない場合は何もしない
shiftselfの先頭より1要素を取り出す(FIFO)。

Stringオブジェクト

strip文字列の先頭と末尾の空白文字(\t\r\n\f\v)を取り除く
chop改行文字を削除
chomp文字列末尾の文字を1文字削除。ただし、文字列末尾が\r\nの場合は、2文字とも削除

IOクラス

ファイルを読み取る

readlines .. ファイルを全て読み込み、その各行の配列を返す

1行読み込む
gets .. EOFに到達した時 => nil
readline .. EOFに到達した時 => EOFError

ファイルポインタの移動や設定

rewind, pos, seek

Hashメソッド

Hash#hash_key?(key) => bool
Hash#include?(key) => bool
Hash#key?(key) => bool
Hash#member?(key) => bool

例外クラス

SyntaxError文法エラーがあった場合
SignalException捕捉していないシグナルを受けた場合
ArgumentError引数の数が合わない場合や、値が正しくない場合
RuntimeError特定の例外クラスには該当しないエラーが発生した場合や例外クラスを省略したraiseの呼び出し
NameError未定義のローカル変数や定数を参照した場合
NoMethodError未定義のメソッドを呼び出した場合
ZeroDivisionError整数に対し整数の0で除算を行なった場合
EncodingErrorエンコーディング関連の例外の基底クラス。
IOError入出力でエラー
IndexError添字が範囲外の時に発生
KeyErrorHash#fetchなどでkeyに対応するvalueがない場合に発生

Dirクラス

Dir.open開く
Dir.pwd
Dir.getwd
カレントディレクトリの取得
Dir.chdirカレントディレクトリを指定パスに変更
Dir.mkdir新規作成
Dir.rmdir
Dir.unlink
Dir.delete
削除

同じ、または似ているメソッド

collectmap
collect_concatflat_map
countsize, length
detectfind
each_conseach_slice
each_with_objectinject, reduce
entriesto_a
delete_atslice!
delete_ifreject!
keep_ifselect!
selectfind_all
updatemerge!

広告

もふぃ
もふぃ

この記事がおもしろかったよ!参考になったよ!と言う方は、購入しなくてもいいので、ワンクリックだけでもよろしくお願いします!

ブログ記事を書く励みになります!

参考記事

Ruby技術者認定試験silverで中々覚えにくいやつメモ - Qiita
表題の通りです。Rubysilver取得の学習中ですが、なんか覚えにくいなあというものをここに吐き出せばきっと覚えられるんじゃないか、と思ったので。 RExとかで9割超えてきたし、合格教本の問題も9割くらいできるようになったのでそろそ...
Ruby 予約語 - Qiita
意味を持っているので変数としては使えない LINE alias class elsif if not return nndef yield ENCODING and def end in or self unless ...

宣伝

もふぃ
もふぃ

ブログ記事の応援もよろしくお願いします!

タイトルとURLをコピーしました