LoginSignup
29
20

More than 3 years have passed since last update.

【Ruby技術者認定試験】ポイントまとめ

Last updated at Posted at 2019-02-23

Ruby Silver 試験ポイントまとめ(自分用)

自分用メモで汚いですが間違えやすいところをまとめてますぜひ

  • Ruby 2.0以降では、デフォルトのスクリプトエンコーディングはUTF-8
  • Hash#eachのブロックパラメータはArray。
  • Hash#size はhashの要素の数を返す
  • Enumerable#select selfからブロックの条件に該当する要素を集めて返す。
  • Enumerable#find selfからブロックの条件に該当する最初の要素を返す。
  • Array#delete selfから引数の要素を削除。削除した要素を返す。破壊的メソッド。

  • 例外処理について

    • Rescue 節で省略するとstandard error とそのサブクラスを拾う
    • Ensure節は必ず実行される
    • raiseメソッドは引数を指定していなければ、RuntimeError例外を発生
  • 八進数表記

    • 0から始まるもの
    • Puts 090 などでエラー
  • 演算子の優先順位は*よりも**が高い

  • Ruby定数は大文字で始める

    • 変更可能だが警告が出る
  • Ruby変数名

    • 1文字目はアルファベット小文字か_で始める必要がある。
    • 2文字目以降はアルファベットもしくは数字を使用
  • 可変長変数

    • *a などで宣言
    • 任意の数の引数が取れ、aに配列が格納される
  • Initializeメソッドは何回でも読み出され書き直される

  • Super の記述場所は任意の位置でおk

  • 外部モジュール読み込みについて

    • 数学PIなどをしようする場合Mathモジュールを読みこむ必要がある
    • 読み込み方法例
      • Include Math
      • Math::PI
  • クラス拡張のメソッドより特異メソッドが優先して実行される

  • .. , … 演算子について

    • a = [1,2,3,4]
    • a[0..3] => [1,2,3,4]
    • a[0..-1] => [1,2,3,4]
    • a[0,3] => [1,2,3]
  • find_all == select

  • map == collect

  • 正規表現記号

    • *は直前の文字列の0回以上の繰り返しを表す
    • Iオプションで大文字と小文字の区別しない
    • . は任意の文字を表す
    • {m}は直前の正規表現のm回の繰り返しを意味
    • Mオプションで.が改行にもマッチする
    • \d+などの+は連続を表す
    • Matchは一度しか行わない
    • Scanは繰り返し行われる
    • \wは単語構成文字の省略記号
  • 65を”A”にしたい時

    • 65.chr
    • 逆は”A”.ord
  • ヒアドキュメント

    • <<-識別子' のように-' を付けて書くことで終端行をインデントすることは可能
    • 通常は空白を開けるとエラー
  • Chompメソッドで\r\n全て消す

  • chopメソッドで末尾の文字を消す

  • IO#rewindはファイルポインターを先頭に移動する

  • Splitメソッドは引数で特定の文字列を区切り文字として指定できる。また第二引数で生成される配列の個数を指定することができる。

  • “0-5”は範囲指定になるが、”8-”では範囲指定にならず8と-を削除します

  • eql は 文字列が同じ場合true

  • equal は オブジェクトが同じかどうかを見る

  • inject はブロックに要素を割り当てる…|i,j|

  • IO

    • IO#getsとIO#readlineはファイルオブジェクトから一行読み込んで、読み込みに成功した時にはその文字列を返す。
    • IO#getsとIO#readlineの違いはEOFに到達した時の振る舞いのみ。IO#getsはnil, IO#readlineはEOFErrorを返す
foo = [1,2,3]
bar = foo
p foo === bar # => true
Module Foo
  def foo           //インスタンスメソッドとして定義
    puts("foo")
  end
end

Class Bar
  extend Foo        //FooモジュールのインスタンスメソッドをBarクラスの特異メソッドとして定義
end

Bar.foo  #=> foo  という使い方ができる
  • ::Fooのような::演算子から始まる定数は、トップレベルで定義されている定数

  • slice!はスライス後を参照している

  • ファイルの末尾(EOF)への反応の仕方

    • getsの場合、nilが帰る
    • Readlineの場合、EOFError例外が発生する
  • File#mtimeメソッドは更新が保存されるがFile::Stat#mtimeメソッドは更新が保存されない

    • File::Statクラスはnewメソッドのみクラスメソッド
  • ファイル名と拡張子が".“で区切られているファイル名から任意の拡張子を取り除く時に、第2引数として”.*"を指定してFile.basenameを呼び出します

  • "%2d%s"の"%2d"は出力したい数値が2桁より少なければ、空白スペースを入れるようにする指定

(1..5).each_cons(3) {|arr| p arr }
# <実行結果>
# [1, 2, 3]
# [2, 3, 4]
# [3, 4, 5]

(1..10).each_slice(3) {|arr| p arr }
# <実行結果>
# [1, 2, 3]
# [4, 5, 6]
# [7, 8, 9]
# [10]
arr = [1,2].zip([3,4])
p arr
# <実行結果>
[[1, 3], [2, 4]]
a1 = [1,2,3]
a2 = [4,2,3]
p a1 - a2
# <実行結果>
[1]
p ({a: 100, b: 100}).invert

# <実行結果>
# {100 => :b}
1: s = ["one", "two", "three"]
2: s.shift
3: s.shift
4: s.unshift
5: s.push "four"
6: p s

# <実行結果>
# 1: ["one", "two", "three"]
# 2: ["two", "three"]
# 3: ["three"]
# 4: ["three"]
# 5: ["three", "four"]
p "Ruby on Rails".delete("Rails")
# <実行結果>
# "uby on "
a, b = 0    # a => 0, b => nil
c, a = 1    # c => 1, a => nil
a, d = 1, 2 # a => 1, d => 2
b, c = 3    # b => 3, c => nil
29
20
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
20