2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ruby技術者認定試験Silverで引っ掛かりやすい問題

Last updated at Posted at 2020-03-09

Ruby技術者認定試験のSilverを勉強中ですが、個人的に引っ掛かりやすい問題についてまとめました。
随時更新予定。
引っかかった問題は、ほぼREx - Ruby Examinationさんからの出題です。

x進数

文字列からx進数への置換

メソッド 内容
hex 16進数で解釈し、整数で返す。
解釈できない場合は0を返す。
接頭語0x,0X,アンダースコアは無視される。
oxt 8進数で解釈し、整数で返す。
解釈できない場合は0を返す。
接頭語は無視しない。

基数指示子

数値の前につけることで、何進数かを指定するもの。

基数指示子 内容
0b 2進数(binary)
0o 8進数(octal)
0d 10進数(decimal)
0x 16進数(hexadecimal)

日付フォーマット

忘れやすいフォーマットを列挙します。
小文字と大文字を混同しやすいので注意。

フォーマット 表示
%x %m/%d/%y で表示される
%D %m/%d/%y で表示される
%xと同等
%d 0埋めの日付
%F %Y-%m-%d で表示される
%y 西暦の下2桁
%Y 西暦4桁
%M 0埋めの分
%m 0埋めの月

Hashクラス

生成方法

  • Hash({})
  • {}
  • Hash.new
  • 二次元配列.to_h

メソッド

破壊的か、非破壊的かに注意する

メソッド名 内容
merge 引数のハッシュをマージする 非破壊的
update 引数のハッシュをマージする
merge!と同等
破壊的

その他

  • splat演算子(*)でハッシュは配列に展開される
    • *{a: 100, b: 200} => [[:a, 100],[:b, 200]]

Arrayクラス

メソッド

配列を組み合わせて生成するメソッド。混同しやすいので注意。

メソッド名 内容
zip [1,2].zip([3,4]) => [[1,3],[2,4]]
product [1,2].product([3,4]) => [[1,3],[1,4][2,3][2,4]

配列に値を追加、削除をするメソッド。いずれも破壊的メソッド。

メソッド名 位置
pop 末尾 取り出し
push 末尾 追加
shift 先頭 取り出し
unshift 先頭 追加

その他

  • -は引数に含まれる要素と同一の要素を取り除いて返却する。

Stringクラス

空白、改行を削除するメソッド

何を取り除くのか間違いやすいので注意。
またいずれも非破壊的で、!を付けると破壊的メソッドとなる。

メソッド名 除去対象 位置
chomp 改行コード 末尾
strip 空白文字 先頭と末尾
chop 空白文字 末尾

その他

  • String#%でフォーマットされた文字列を返す。指示子がない場合は、そのままを返却。
  • Stringの結合は+,<<,concat,*の4つ。

Dirクラス、Fileクラス、IOクラス

ファイルの書き込みモード

追記する位置の違いに注意。
※読み込みは、IO#seekで指定が無ければ、いずれのモードも先頭から行う

モード 内容 書き込み位置
a 追記モード 常にファイルの末尾
r+ 読み書きモード ファイルの先頭
w+ 読み書きモード 既存ファイルの内容を空にして追記
a+ 読み書きモード ファイルの末尾

ファイルポインタ

定数名 内容
IO::SEEK_SET ファイルの先頭からの位置
IO:SEEK_CUR 現在のファイルのポインタの位置
IO:SEEK_END ファイルの末尾

io.seek(-10, IO:SEEK_END)のように使う。

Enumerableモジュール

似ているけど動きが違うメソッド。

メソッド名 内容
find ブロックを評価し、最初に真になった値を返却する
select ブロックを評価し、真になった値を全て返却する

%記法

%を付けると、文字列を囲う記号を指定できる

書式 生成値
%Q ダブルクォートで囲う。
%と同意
%q シングルクォートで囲う
%W 配列を生成
式展開可能
%w 配列を生成
式展開できない
%x コマンドを出力
%s シンボル
%r 正規表現

ブロック

  • do...endと{...}では、{...}の方が結合度が強い
  • p [1,2,3,4].map do |e| e * e endを実行すると、do...endの方が弱いので、p {[1,2,3,4].map}が評価される

その他

  • unlesselsifを用いることはできない(elseはOK)
  • 可変長引数は2つ以上指定できない
  • メソッドと変数の探索順位は、変数が先
  • ヒアドキュメントで<<-と指定すると、インデントを加えることができる
2
1
0

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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?