Qiita初心者が作成中です!
#文法1
###コメント
- 単行コメント
単行コメント
# 単行コメント
# 行末まですべてコメント
- 複数行コメント
複数行コメント
=begin
複数行コメント
「=begin」と「=end」は行頭に記述する必要がある
=end
- 文末コメント
文末コメント
__END__
これ以降はコメント
###予約語
予約語
__FILE__、__LINE__、BEGIN、END、alias、
and、begin、break、case、class、
def、defined?、do、else、elsif、
end、ensure、false、for、if、
in、module、next、nil、not、
or、redo、rescue、retry、return、
self、super、then、true、indef、
unless、until、when、while、yield
###リテラル(数値、真偽値、文字列、文字、配列、ハッシュ等)
#####数値
- 2進数 → 0b【数値】
2進数
irb(main):001:0> 0b1
=> 1
irb(main):002:0> 0b2
Traceback (most recent call last):
1: from C:/Ruby25-x64/bin/irb.cmd:19:in `<main>'
SyntaxError ((irb):2: numeric literal without digits)
irb(main):003:0> 0b10
=> 2
irb(main):004:0> 0b11
=> 3
irb(main):005:0> 0b12
Traceback (most recent call last):
1: from C:/Ruby25-x64/bin/irb.cmd:19:in `<main>'
SyntaxError ((irb):5: syntax error, unexpected tINTEGER, expecting end-of-input)
- 8進数 → 0【数値】もしくは0o【数値】
8進数
irb(main):001:0> 01
=> 1
irb(main):002:0> 07
=> 7
irb(main):003:0> 08
Traceback (most recent call last):
1: from C:/Ruby25-x64/bin/irb.cmd:19:in `<main>'
SyntaxError ((irb):3: Invalid octal digit)
irb(main):004:0> 010
=> 8
irb(main):005:0> 011
=> 9
irb(main):006:0> 017
=> 15
irb(main):007:0> 018
Traceback (most recent call last):
1: from C:/Ruby25-x64/bin/irb.cmd:19:in `<main>'
SyntaxError ((irb):7: Invalid octal digit)
irb(main):008:0>
irb(main):009:0> 0o1
=> 1
irb(main):010:0> 0o7
=> 7
irb(main):011:0> 0o8
Traceback (most recent call last):
1: from C:/Ruby25-x64/bin/irb.cmd:19:in `<main>'
SyntaxError ((irb):11: Invalid octal digit)
irb(main):012:0> 0o10
=> 8
irb(main):013:0> 0o17
=> 15
irb(main):014:0> 0o18
Traceback (most recent call last):
1: from C:/Ruby25-x64/bin/irb.cmd:19:in `<main>'
SyntaxError ((irb):14: Invalid octal digit)
- 10進数 → 【数値】 もしくは 0d【数値】
10進数
irb(main):001:0> 1
=> 1
irb(main):002:0> 10
=> 10
irb(main):003:0> 11
=> 11
irb(main):004:0> 0d1
=> 1
irb(main):005:0> 0d10
=> 10
irb(main):006:0> 0d11
=> 11
- 16進数 → 0x【数値】
16進数
irb(main):001:0> 0x1
=> 1
irb(main):002:0> 0x9
=> 9
irb(main):003:0> 0xA
=> 10
irb(main):004:0> 0xF
=> 15
irb(main):005:0> 0xG
Traceback (most recent call last):
1: from C:/Ruby25-x64/bin/irb.cmd:19:in `<main>'
SyntaxError ((irb):5: numeric literal without digits)
irb(main):006:0> 0x10
=> 16
irb(main):007:0> 0x1A
=> 26
irb(main):008:0> 0x1F
=> 31
irb(main):009:0> 0x1G
Traceback (most recent call last):
1: from C:/Ruby25-x64/bin/irb.cmd:19:in `<main>'
SyntaxError ((irb):9: syntax error, unexpected tCONSTANT, expecting end-of-input)
- 浮動小数点数 → e【数値】
10の【数値】乗。
浮動小数点数
irb(main):001:0> 1e1
=> 10.0
irb(main):002:0> 1e2
=> 100.0
irb(main):003:0> 1e3
=> 1000.0
irb(main):004:0> 1e-1
=> 0.1
irb(main):005:0> 1e-2
=> 0.01
irb(main):006:0> 1e-3
=> 0.001
- 複素数 → 【数値】i
- 虚数部が有理数の複素数 → 【数値】ri
浮動小数点数
irb(main):001:0> 5i
=> (0+5i)
irb(main):002:0> 7.0i
=> (0+7.0i)
irb(main):003:0> 1.8i
=> (0+1.8i)
irb(main):004:0> 5ri
=> (0+(5/1)*i)
irb(main):005:0> 7.0ri
=> (0+(7/1)*i)
irb(main):006:0> 1.8ri
=> (0+(9/5)*i)
10の【数値】乗。
浮動小数点数
irb(main):001:0> 1e1
=> 10.0
irb(main):002:0> 1e2
=> 100.0
irb(main):003:0> 1e3
=> 1000.0
irb(main):004:0> 1e-1
=> 0.1
irb(main):005:0> 1e-2
=> 0.01
irb(main):006:0> 1e-3
=> 0.001
###文字列リテラル
- ''(シングルクォーテーション) → 囲われた文字を文字列として扱う。式展開不可。
- ""(ダブルクォーテーション) → 囲われた文字を文字列として扱う。式展開可。
文字列リテラル
irb(main):001:0> puts 'aaa #{1+1}'
aaa #{1+1}
=> nil
irb(main):002:0> puts "aaa #{1+1}"
aaa 2
=> nil
###配列リテラル
配列の要素に異なるリテラルを使用可。
「’’」で囲っても「""」扱いになる?
配列リテラル
irb(main):001:0> a=[1,'a',234,"bcd",]
=> [1, "a", 234, "bcd"]
irb(main):002:0> b=[,2,3]
Traceback (most recent call last):
1: from C:/Ruby25-x64/bin/irb.cmd:19:in `<main>'
SyntaxError ((irb):2: syntax error, unexpected ',', expecting ']')
b=[,2,3]
^
irb(main):003:0> b=[1,,3]
Traceback (most recent call last):
1: from C:/Ruby25-x64/bin/irb.cmd:19:in `<main>'
SyntaxError ((irb):3: syntax error, unexpected ',', expecting ']')
b=[1,,3]
^
###ハッシュリテラル
ハッシュ内のキーと値は「=>」や「:」でつなぐことができる。
「:」は文字列リテラルのみ?
ハッシュリテラル
irb(main):001:0> {"abc"=>123,"de"=>45,678=>9}
=> {"abc"=>123, "de"=>45, 678=>9}
irb(main):002:0> {"abc":123,'de':45,"678":9}
=> {:abc=>123, :de=>45, :"678"=>9}
irb(main):003:0> {"abc":123,'de':45,678:9}
Traceback (most recent call last):
1: from C:/Ruby25-x64/bin/irb.cmd:19:in `<main>'
SyntaxError ((irb):3: syntax error, unexpected ':', expecting =>)
{"abc":123,'de':45,678:9}
###正規表現リテラル
正規表現 → 「/」で囲まれた文字列。
正規表現に対するオプション → 終りの「/」の直後の文字。
正規表現リテラル
/Ruby/i
/my name is #{myname}/o
- 正規表現に対するオプション
i:正規表現はマッチ時に大文字小文字の区別を行わない。
o:一番最初に正規表現の評価が行われた時に一度だけ式展開を行う。
x:正規表現中の空白(改行も含む)を無視する。
また、バックスラッシュでエスケープしない。
「#」から改行までをコメントとみなして無視する(ただし、コメント中に「/」を含めると構文解析に失敗するので注意)
正規表現リテラル オプションx
/foo # コメント
bar/x
→これは /foobar/ と同じ。
空白を含めるには「\」のようにエスケープする。
m:複数行モード。正規表現 "." が改行にもマッチするようになる。