LoginSignup
11
10

More than 5 years have passed since last update.

Ruby Gold

Last updated at Posted at 2016-06-22

出題範囲

実行環境

  • コマンドラインオプション (ref)
コマンドラインオプション 指定した時の動作
-h ヘルプを表示する
-v バージョンを表示する
-c 指定されたファイルが文法的に正しいか確認する
-e 指定された文字列をRubyプログラムとして実行する
-w 冗長モードでの実行
-W0,-W1,-W2,-W 出力範囲を指定した冗長モードでの実行
-l $LOAD_PATHに指定された文字列を追加する
-r スクリプト実行前に指定されたファイルを実行する
-d デバッグモードで実行する
  • 組み込み変数/定数

識別子 概要 スコープ
\$stdout,\$> 標準出力。初期値はSTDOUT グローバル
\$stderr 標準エラー出力。初期値はSTDERR グローバル
\$stdin 標準入力。初期値はSTDIN グローバル
\$SAFE 現在のスレッドのセーフレベルを表す整数 ローカル
\$! 最後に発生した例外オブジェクト ローカル
\$@ 最後に発生した例外のバックトレースを表す配列 ローカル
\$$ 実行中のRubyプロセスのプロセスID ローカル
\$? 最後に終了した子プロセスのプロセスID ローカル
\$LOADED_FEATURES,\$" Kernel.#requireによるロード済みファイルの配列 グローバル
\$~ 最後に成功した正規表現マッチに関する情報(MatchDataオブジェクト) ローカル
\$1,\$2,\$n... 最後に成功した正規表現マッチでn番目の括弧にマッチした値(nは正の整数) ローカル
\$+ 最後に成功した正規表現マッチで最後の括弧にマッチした値 ローカル
\$& 最後に正規表現でマッチした文字列 ローカル
\$' 最後に正規表現でマッチした文字列よりも後ろの文字列 ローカル
\$` 最後に正規表現でマッチした文字列よりも前の文字列 ローカル
\$* Rubyスクリプトに与えられた引数の配列。ARGVと同じ グローバル
\$/,\$-0 デフォルトの入力の行区切りを表す文字列。デフォルトは\n グローバル
\$;,\$-F グローバル
\$:,\$LOAD_PATH,\$-l グローバル
\$DEBUG グローバル
\$VERBOSE グローバル
\$PROGRAM_NAME グローバル
\$< グローバル
\$FILENAME グローバル
\$_ ローカル
  • Objectクラスに標準で定義されている組み込み定数
定数 概要
ARGF 引数 (なければ標準入力) で構成される仮想ファイル
ARGV Ruby スクリプトに与えられた引数を表す配列
DATA スクリプトの _END_ プログラムの終り以降をアクセスする File オブジェクト
ENV 環境変数を表す (疑似) 連想配列
FALSE 非推奨。代表的な偽の値。false と同じ
NIL 非推奨。 nil と同じ
RUBY_COPYRIGHT Ruby のコピーライトを表す文字列

文法

  • 変数と定数
変数の種類 命名規則 スコープ 初期化なしの動作
ローカル変数 先頭:英小 or _ 代入式からそれを含むブロックまたはメソッドの終わりまで 未実行はnil,未記述は例外
インスタンス変数 先頭:@ インスタンス内 nil
クラス変数 先頭:@@ クラスの全インスタンス 例外
グローバル変数 先頭:$ どこからでも参照可能 nil
定数 先頭:英大
  • 演算子
演算子 説明
代入
自己代入
多重代入
範囲式
条件式としての範囲式
and
or
not
条件演算子
=== caseでは内部の比較に===演算子を使っている
  • ブロック
  • 例外処理
  • 大域脱出
  • キーワード引数
  • ラムダ式(->)
  • 引数
種別 特徴
可変長引数
  • デフォルトは指定できない
  • 引数は配列として扱われる
  • ひとつのメソッドには1つしか指定できない
  • 可変長引数には*をつける
  • alias alias 新メソッド名 旧メソッド名 alias 新グローバル変数名 旧グローバル変数名

オブジェクト指向

  • メソッドの詳細
  • メソッドの可視性
  • クラスの詳細
  • クラスの継承
  • モジュールの詳細
  • Module#prepend
  • Refinements

  • privateメソッドはレシーバを指定した呼び出しはできない。

  • ancestorsはレシーバがModuleクラスまたはClassクラスのインスタンスの場合に有効。

  • const_missingはクラスに定数が定義されてないときに呼び出される。

  • http://qiita.com/fukumone/items/2dd4d2d1ce6ed05928de

メソッド 概要
inspect オブジェクトを人間が読める形式に変換した文字列を返します。

組み込みライブラリ

  • よく使用されるクラス(Object,Kernel,Module)
  • よく使用されるモジュール(Enumerable,Comparable)
  • 数値
  • 正規表現
  • Proc
  • Thread/Fiber
クラス
thread rescueで処理されなかった場合例外が発生したスレッドだけが警告なしで終了し、他のスレッドは実行を続ける。-dオプションではデバッグモードとなりいずれかのスレッドで例外が発生した時点でインタプリタ全体が中断する。
kernel requireは拡張子補完をし、同じファイルの複数回ロードはしない。
object dupはオブジェクトの内容、taint情報をコピーする。cloneはそれに加えてfreeze、特異メソッドなどの情報も含めた完全な複製を作成する。オブジェクトの参照している先までは複製しない。
Array shiftは先頭の要素を取り除いてそれを返す。unshiftは引数の最後から順に先頭に挿入する。pushは配列の最後の要素に追加する。popは配列の最後の要素を返す。
モジュール 概要
Marshal 無名のクラス/モジュール、システムがオブジェクトの状態を保持するもの。(Dir,File,IO,Socket等)特異メソッドを定義したオブジェクトはマーシャリングできない。

Enumerable#lazy
http://magazine.rubyist.net/?0041-200Special-lazy

標準添付ライブラリ

  • よく使用されるライブラリ(socket,date,stringio)
クラス 概要
stringio 文字列に IO と同じインタフェースを持たせるためのライブラリです
Time Time - Time -> Float
rdoc
  • 普通のリスト:'*' or '-'
  • 番号付きリスト:数字+ピリオド
  • アルファベット+ピリオド
  • イタリック体:_word_
  • ボールド体:*word*
  • タイプライター体:+word+
DateTime yesterday = DateTime.now - 1
Rational Float + Rational -> Float
Complex Float + Complex -> Complex
thread スレッドを生成し実行するメソッドはstart,new,forkである。forkはinitializeメソッドを呼ばない。

43

11
10
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
11
10