Rubyで使われる記号の意味(正規表現の複雑な記号は除く) (Ruby 3.3 リファレンスマニュアル)

Rubyで使われる記号の意味(正規表現の複雑な記号は除く)

[edit]

! ? # % & |  + - * / ^ '  . , < > = ~  $ @ _ {}  [] () " : `  \ ;

!

!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 オブジェクトをブロックとして使う。メソッド呼び出し(super・ブロック付き・yield)/ブロック付きメソッド呼び出し を参照。

xxx&.yyy

safe navigation operator(通称「ぼっち演算子」)。xxx が nil でないときにメソッドyyyを呼び出す。メソッド呼び出し(super・ブロック付き・yield) を参照。

|

3 | 5

論理和演算子または類似のメソッド。二進数で 0011 | 0101 => 0111。

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)

単項 - (マイナス)。混乱を避けるため適宜()でくくるとよい。

% ruby -w など コマンドラインの入力 -AAA

コマンドラインオプション

*

2 * 3

かけ算。または類似の演算を行うメソッド。

2**3

累乗。または類似の演算を行うメソッド。

def xxx(*yy) ・・ *がついた引数

メソッド呼出の引数展開。メソッド呼び出し(super・ブロック付き・yield)クラス/メソッドの定義/メソッド定義 を参照。

x, *y = foo()

多重代入。演算子式/多重代入 を参照。

/xx*/

正規表現の、直前の表現の 0 回以上の繰り返し。できるだけ長くマッチしようとする。 正規表現 を参照。

/

10 / 3

割り算、または類似のメソッド。

/xxx/

リテラル/正規表現リテラル

'1二三四5'.split(//)

// は空の正規表現を意味する

^

true ^ true

「xor」演算子。排他的論理和。または類似のメソッド。

a ^= true

「^」演算子の自己代入演算子。aの論理値の反転。

    p(a=true);p(a^=true);p(a^=true) #=> true false true
/^xxx/

正規表現で、行頭。文字列の先頭や改行文字の直後の位置にマッチします。

:

:exit等の:のついた識別子

シンボルリテラル。リテラル/シンボル を参照。

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/ など 条件式 式 .. 式

条件式中の範囲式は特別にフリップフロップのように働きます。

    '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

シフト演算子。または類似のメソッド。

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]

ビット演算の否定。

 '%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({})

丸カッコ()は厳密には、複数の文、式をまとめてひとつの式にするグループ化の()(上の例のカッコ)とメソッドの引数を明示する()(下の例のカッコ)があります。下の例はカッコを省略した場合に引数として解釈されません。例のような特別な場合を除き、普段は使い分けを意識する必要はありません。()は意味が不明瞭にならない範囲で省略が可能です。

"

"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 ... }

ブロックローカル変数を宣言するための区切り。