Ruby スクリプトで使われる記号の一覧です。
以下のようなものはそれぞれ、全く含んでいないか一部のみ含んでいます。
- 正規表現のメタ文字
Date#strftimeの書式指定で使う%,-,.とかの類Kernel?.formatの書式指定で使う%,#,+,-とかの類String#unpack,Array#packのテンプレートで使う!,<,>- ファイルパスのデリミター
- CSV,JSON,YAML,XML など特定のファイルフォーマットに使うもの
! ? # % & | + - * / ^ ' . , < > = ~ $ @ _ {} [] () " : ` \ ;
!
!true-
not 演算子。演算子式/not を参照。
3 != 5-
「等しくない」比較演算子。演算子式/not を参照。
def xxx!-
「
!」はメソッド名の一部です。同名の(!の無い)メソッドに比べて、より注意して使うべきメソッドであることを示します(例:trとtr!)。破壊的なメソッドに使われることが多いですが、!が付いていないメソッドが破壊的でないとは限りません。 /xxx/ !~ yyy-
正規表現のメソッド
=~の否定。マッチが失敗したらtrueを返します。
?
?a-
リテラル/文字リテラル。長さ 1 の文字列。
def xx?-
この場合の「
?」はメソッド名の一部分です。慣用的に、真偽値を返すタイプのメソッドを示すために使われます。 xx ? yy : zz-
演算子式/条件演算子。三項演算子とも呼ばれます。
if xx then yy else zz endと同じ意味です。 /xxx?/-
正規表現の、量指定子(quantifiers)。直前の正規表現の 0 または 1 回の繰り返し。
#
- #コメント
-
字句構造/コメント。
#から行末までがコメントになります。 - xxx #=> 実行結果
- xxx # => 実行結果
-
慣用的に実行結果を示すために使われるコメントの書き方。
#! ruby -Ks-
shebang。Rubyの起動/インタプリタ行の解釈 を参照。
# coding: utf-8-
マジックコメント。多言語化/magic comment を参照。
"a is #{a}"-
a = 10 p "a is #{a}" # => "a is 10" Range#each-
説明文の中でのみ使われます。Ruby言語の要素ではありません。クラスのインスタンスメソッドであることを簡単に表示するための表記法です。一方、クラスメソッドは「
Range.new」のように「.」でつなぎます。
%
10 % 3-
各クラスで定義された「
%」演算子。整数クラスでは「剰余」を意味するメソッド。Numeric#% メソッドなどを参照。 "%04b" % 10-
Stringクラスの「
%」演算子。String#% メソッド。文字列中ではフォーマット指定子としても使われる。 - %r{/etc/httpd/logs$} や %w[foo bar baz] ・・ %<文字><区切り文字><文字列><区切り文字>
-
リテラル/%記法。<区切り文字>には任意の非英数字を用いることができ、 <文字>によって式の意味が異なります。なお、最初の <区切り文字> が、左側の角括弧
[、丸括弧(、ブレース{、小なり不等号<、の場合は、対応する右側の括弧が終わりの <区切り文字> になります。p %r{/etc/httpd/logs$} # => /\/etc\/httpd\/logs$/ p %w[foo bar baz] # => ["foo", "bar", "baz"] %!STRING!-
%記法の一種。リテラル/%記法。ダブルクォート文字列で%Q!STRING!と同じ。p %!nomad! # => "nomad" % ruby -e "puts 'Hello'"-
コマンドラインへの入力を示す。rubyスクリプト上で入力を行うには
\command`やsystem(command)` などと書く
&
xxx & yyy-
論理積演算子。または類似の演算を行うメソッド。
p( 3 & 5 ) # => 1 ・・ 二進数で 0011 & 0101 # => 0001 a &= yyy-
「
&」メソッドの自己代入演算子。 xxx && yyy-
「and」演算子。
p( 3 && 5 ) # => 5 ・・ 3 も 5 も真なので右の値を返す。 - def xxx(&yyy) ・・ &がついた引数
-
メソッド定義のブロック引数。クラス/メソッドの定義/メソッド定義 を参照。
xxx(&b)-
Proc オブジェクトをブロックとして使う。メソッド呼び出し/ブロック付きメソッド呼び出し を参照。
xxx&.yyy-
safe navigation operator(通称「ぼっち演算子」)。
xxxがnilでないときにメソッドyyyを呼び出す。メソッド呼び出し を参照。
|
3 | 5-
論理和演算子または類似のメソッド。二進数で
0011 | 0101 => 0111。 Set[1, 2] | Set[2, 3]-
和集合を求めるメソッド(Set#| など)。ビット演算以外の意味で定義されることもあります。
require 'set' p Set[1, 2] | Set[2, 3] # => Set[1, 2, 3] 3 || 5-
「or」演算子。3 は真なので左の値を返す。
a ||= xxx-
「
||」演算子の自己代入演算子。aが 偽 か 未定義 ならaにxxxを代入する、という意味になります。a ||= :some p a # => some a ||= :sec p a # => some 5.times{|n| p n}-
ブロックパラメータであることを示す区切り文字。
/xx(xx|xx)/-
正規表現の選択
+
2 + 3-
たし算。または類似の演算を行うメソッド。
+ 3-
単項演算子
+。 /xxx+/-
正規表現の、量指定子(quantifiers)。直前の表現の 1 回以上の繰り返し
-
3 - 2-
引き算。または類似のメソッド
3 * (-5)-
単項
-(マイナス)。混乱を避けるため適宜()でくくるとよい。 -"abc"-
単項マイナスは
-@という名前のメソッドとして定義されています。数値では符号の反転(Integer#-@ など)ですが、それ以外の意味で定義されることもあります(例: String#-@ は freeze された文字列を返します)。メソッド定義での表記は @ のdef -@の項を参照。s = -"abc" # String#-@ の呼び出し p s.frozen? # => true - % ruby -w など コマンドラインの入力 -AAA
-
コマンドラインオプション
*
2 * 3-
かけ算。または類似の演算を行うメソッド。
2**3-
累乗。または類似の演算を行うメソッド。
def xxx(**yy)-
メソッド定義における残りのキーワード引数の受け取り。呼び出し時に渡されたキーワード引数のうち、他の仮引数に対応しないものをすべてハッシュとしてまとめて受け取る。クラス/メソッドの定義/メソッド定義 を参照。
foo(**hash)-
メソッド呼び出しにおけるハッシュのキーワード引数への展開。ハッシュの各要素をキーワード引数として渡す。メソッド呼び出し を参照。
- def xxx(*yy) ・・ *がついた引数
-
メソッド呼出の引数展開。メソッド呼び出し と クラス/メソッドの定義/メソッド定義 を参照。
foo(*ary)-
メソッド呼び出しにおける配列の実引数への展開。配列の各要素を個々の引数として渡す。メソッド呼び出し を参照。
[*3..7]-
配列式の中での展開。展開した要素を含む配列を生成する。 リテラル/配列式 を参照。
p [*3..7] # => [3, 4, 5, 6, 7] x, *y = foo()-
多重代入。演算子式/多重代入 を参照。
ary = *3..7-
多重代入の右辺での展開。右辺を配列に変換して代入する。 演算子式/多重代入 を参照。
ary = *3..7 p ary # => [3, 4, 5, 6, 7] /xx*/-
正規表現の、直前の表現の 0 回以上の繰り返し。できるだけ長くマッチしようとする。 正規表現 を参照。
/
10 / 3-
割り算、または類似のメソッド。
Pathname("/usr") / "local"-
パス名の連結(Pathname#/)など、割り算以外の意味で定義されることもあります。
require 'pathname' p Pathname("/usr") / "local" / "bin" # => #<Pathname:/usr/local/bin> /xxx/- '1二三四5'.split(//)
-
//は空の正規表現を意味する
^
true ^ true-
「xor」演算子。排他的論理和。または類似のメソッド。
a ^= true-
「
^」演算子の自己代入演算子。aの論理値の反転。p(a=true);p(a^=true);p(a^=true) # => true false true /^xxx/-
正規表現で、行頭。文字列の先頭や改行文字の直後の位置にマッチします。
:
- :exit等の:のついた識別子
-
シンボルリテラル。リテラル/シンボル を参照。
:"foo bar"-
クォートを使ったシンボルリテラル。通常の識別子には使えない文字を含むシンボルを書けます。リテラル/シンボル を参照。
p :"foo bar" # => :"foo bar" Net::HTTP-
定数のスコープ演算子。変数と定数/定数 を参照。
::DateTime-
定数のスコープ演算子で、トップレベルの定数であることを示す。Object クラスで定義されている定数(トップレベルの定数と言う)を確実に参照するためには 変数と定数/定数 を参照。
xx ? yy : zz-
条件演算子。三項演算子とも呼ばれます。if xx then yy else zz end と同じ意味です。 演算子式/条件演算子 を参照。
{ a:"aaa", b:"bbb" }-
ハッシュの新しい記法。以下と同じです。
{ :a => "aaa", :b => "bbb" }
.
xxx.yyy-
オブジェクトのメソッド
Range.new-
オブジェクトのメソッドだが、説明文の中では特にクラスのクラスメソッド/モジュールのモジュールメソッドを示すことに使われます。一方、インスタンスメソッドは「
Range#each」のように「#」でつなぎます。 1 .. 20-
最大値を含む Range オブジェクトを作る範囲演算子です。全体で範囲式といいます。演算子式/範囲式。
1 ... 20-
最大値を含まない Range オブジェクトを作る範囲演算子です。全体で範囲式といいます。演算子式/範囲式。
- if /^begin/ .. /^end/ など 条件式 式 .. 式
-
範囲式が条件式として書かれたときは、範囲オブジェクトを生成せず、特別にフリップフロップのように働きます。
p '1234543212345'.each_char { |n| print( (n == ?2)..(n == ?4) ? n : '_' ) } # => _234___21234_ #"2"が出るまではfalse、"2"が出てから"4"が出るまではtrue、"4"から"2"まではfalseを返す。 /xx.xx/-
正規表現の任意の一文字。
def foo(...)-
受け取った引数をそのまま別のメソッドに渡すための記法です。受け取る側も渡す側もカッコでくくる必要があります。
def foo(...) bar(...) end
,
- a,b, = [1,2,3] ・・ 代入の左辺の「,」
-
多重代入。演算子式/多重代入 を参照。
a = b, c-
多重代入。演算子式/多重代入 を参照。
def foo(bar, baz)-
メソッド引数の区切り。
{ :a => 1, :b => 2 }-
ハッシュの要素の区切り。
[:a, :b, :c]-
配列の要素の区切り。
{ :a => 1, :b => 2 }.each{|key, val|}-
ブロックパラメータの区切り。
<
3 < 5-
「より小さい」比較演算子
3 <= 5-
「より小さいか等しい」比較演算子
3 <=> 5-
基本的な比較演算子。ほかの比較演算子はこの演算子を元に Comparable モジュールで定義されています。左が大きければ 1, 等しければ 0, 右が大きければ -1 を返すように作ることが期待されています。
3 << 1-
シフト演算を行うメソッド。または類似のメソッド。Array#<< など。
a <<= 1-
「
<<」演算子の自己代入演算子。a = 3 a <<= 1 p a # => 6 - <<EOS または <<-EOS 、<<"EOS" など。
-
ヒアドキュメントです。リテラル/ヒアドキュメント (行指向文字列リテラル)。ヒアドキュメントは
<<識別子を含む行の次の行から識別子だけの行の直前までを文字列とする行指向のリテラルです。 class Foo < Super-
クラス定義でスーパークラスを指定しています。 クラス/メソッドの定義/クラス定義。
class << obj-
特異クラス定義。クラス/メソッドの定義/特異クラス定義 を参照。
>
3 > 5-
「より大きい」比較演算子
3 >= 5-
「より大きいか等しい」比較演算子
3 <=> 3-
基本的な比較演算子。ほかの比較演算子はこの演算子を元に Comparable モジュールで定義されています。左が大きければ 1, 等しければ 0, 右が大きければ -1 を返すように作ることが期待されています。
3 >> 1-
シフト演算子。または類似のメソッド。シフト以外の意味で定義されることもあります(例: Date#>> は n ヶ月後の日付を返します)。
require 'date' p Date.new(2001, 2, 3) >> 1 # => #<Date: 2001-03-03 ...> a >>= 1-
「
>>」演算子の自己代入演算子。a = 3 a >>= 1 p a # => 1 { 1 => "11" , 3 => "333" }-
ハッシュのリテラル
->(a,b){ p [a,b] }-
Ruby1.9 で導入された lambda の新しい記法。以下と同じ。
lambda{|a, b| p [a, b] }
=
a = 12-
代入演算子。
xxx.a = 12-
代入メソッドの呼び出し。
a == 12-
等号演算子。または類似のメソッド。
a === 12-
特殊な等号演算子。Object#=== での説明:「このメソッドは case 文での比較に用いられます。デフォルトは
Object#==と同じ働きをしますが、 この挙動はサブクラスで所属性のチェックを実現するため適宜再定義されます」。たとえば、Range#=== はother が範囲内に含まれている時に真を返します。 - a += 12 , a *= 12 , a ||= 12 など・・a 二項演算子 = b
-
自己代入演算子。演算子式/自己代入 を参照。
a = 7 a **= 2 p a # => 49 def xx=-
この場合の「
=」はメソッド名の一部分です。このタイプの名前のメソッドを定義すると、同時に「=」演算子を定義することになります。 =begin ・・ =end-
埋め込みドキュメントです。字句構造/埋め込みドキュメント を参照。
{ 1 => "11" , 3 => "333" }-
ハッシュのリテラル
rescue => XXX-
例外処理で例外結果を変数
XXXに代入します。 - xxx # => 実行結果
-
慣用的に実行結果を示すために使われるコメントの書き方。
~
'%04b %04b' % [3, ~ 3]-
ビット演算の否定。
p '%04b %04b' % [3, ~ 3] # => "0011 ..100" /xxx/ =~ yyy-
正規表現のメソッド
=~。正規表現と文字列をマッチさせる。両辺を入れ替えても機能します。 /xxx/ !~ yyy-
正規表現のメソッド
=~の否定。マッチが失敗したらtrueを返します。 ~ /xxx/-
/xxx/ =~ $_の省略形。~の後ろは正規表現でなければいけません。
$
$xxx-
グローバル変数。変数と定数/グローバル変数 を参照。
- $_ や $! など ・・$<1文字の数字、記号>
-
特殊変数(組み込み変数)。変数と定数/組み込み変数 を参照。
/xx$/-
正規表現で行末。文字列の末尾や改行文字の直前の位置にマッチします。改行自身は含みません。 正規表現 を参照。
@
@xxx-
インスタンス変数。変数と定数/インスタンス変数 を参照。
@@xxx-
クラス変数。変数と定数/クラス変数 を参照。
- def +@ または def -@
-
単項演算子
+Xや-Xを定義するときの表記法。class Symbol def +@ self.upcase end end puts(+:joke) # => JOKE
_
xxx_yyy-
識別子の中では小文字と同じ扱い
123_456-
文字コード以外の数値リテラルには、
_を含めることができます。 ruby インタプリタは_を単に無視し、特別な解釈は何もしません。 これは、大きな数値の桁数がひと目でわかるように記述するのに便利です。 リテラル/数値リテラル を参照。 _1 ~ _9-
番号指定パラメータ。ブロックの仮引数として参照できます。
# 同じ意味 (1..10).map {|n| n * 2 } (1..10).map { _1 * 2 } [3, 1, 2].sort {|n, m| m <=> n } [3, 1, 2].sort { _2 <=> _1 }
{
}
{ 1 => "11" , 3 => "333" }-
ハッシュのリテラル
5.times{|n| p n}-
ブロック
/xx{2,3}/-
正規表現の、範囲指定繰り返し制御(interval quantifier)。
"a is #{a}"-
式展開。リテラル/式展開 を参照。
a = 10 p "a is #{a}" # => "a is 10"
[
]
[1,"some",:ok]-
配列のリテラル
'abcde'[1,2]-
[] メソッドの実行
class String def [](*a) '(^^;' end end p( 'abcde'[1,2] ) # => "(^^;" /xx[abc]/-
正規表現の文字クラス指定。
(
)
(true and false)p({})-
丸カッコ
()は厳密には、複数の文、式をまとめてひとつの式にするグループ化の()(上の例のカッコ)とメソッドの引数を明示する()(下の例のカッコ)があります。下の例はカッコを省略した場合に引数として解釈されません。例のような特別な場合を除き、普段は使い分けを意識する必要はありません。()は意味が不明瞭にならない範囲で省略が可能です。 (a, b), c = [1, 2], 3-
多重代入で、入れ子になった配列の要素を受けるためのグループ化。 演算子式/多重代入 を参照。
(a, b), c = [1, 2], 3 p [a, b, c] # => [1, 2, 3]
"
"abc"-
文字列リテラル。式展開などが可能なタイプの文字列リテラルです。 リテラル/文字列リテラル を参照。
'
'abc'-
文字列リテラル。最低限のエスケープだけしかしません。式展開などをしたい場合はかわりに
""を用います。
`
- `ls`
-
コマンド出力。バッククォート(`)で囲まれた文字列は、コマンドとして実行され、その標準出力が文字列として与えられます。リテラル/コマンド出力 を参照。
puts `ruby -h` # => Usage: ruby [switches] [--] [programfile] [arguments] # => ....
\
バックスラッシュ。環境によって ¥ に見えたりします。
- puts "abc\"def"
-
文字列や正規表現の中のエスケープ。
puts "abc\"def" # => abc"def - xxx \
-
継続行。改行の直前に置かれる。パースの段階で直後の改行が存在しないものとして扱われます。
puts(3 \ + 4) # => 7
;
a = 3 ;-
式の区切り。改行と同じ
[1,2,3].each{|v; z| z = v * 2 ... }-
ブロックローカル変数を宣言するための区切り。