Ruby データ型

この章では、Ruby の基本データ型について紹介します。

Ruby がサポートするデータ型には、基本的な Number、String、Ranges、Symbols と、true、false、nil という特別な値、そして Array と Hash という 2 つの重要なデータ構造があります。


数値型(Number)

1、整数型(Integer)

整数型には2種類あります。31ビット以内(4バイト)であれば Fixnum インスタンス、それを超えると Bignum インスタンスになります。

整数の範囲は -230から 230-1、この範囲内の整数はクラスFixnumのオブジェクトです。整数値が2の30乗以上の場合( -262から 262-1)、自動的に Bignum 型に変換されます。

整数の前には、オプションの符号、オプションの基数指示子(0 は octal、0x は hex、0b は binary に対応)、その後に一連の数字を使用できます。アンダースコア文字は数値文字列内では無視されます。

ASCII 文字または疑問符を付けたエスケープシーケンスの整数値を取得できます。

例

123 #Fixnum 10進数 1_234 #Fixnum アンダースコア付き10進数 -500 #負の Fixnum 0377 #8進数 0xff #16進数 0b1011 #2進数 "a".ord #"a" の文字コード ?\n #改行文字(0x0a)の文字コード 12345678901234567890 #大きな数 #整数型 Integer 以下は整数リテラルの一部です。 #リテラル(literal):コード中に記述される値、数値、bool値、文字列などはすべてリテラルと呼びます。 #例えば以下の 0, 1_000_000, 0xa など a1=0 #桁区切り付きの整数 a2=1_000_000 #その他の基数の表現 a3=0xa puts a1,a2 puts a3 #puts と print はどちらもコンソールに文字を出力します。puts は改行を含みます。 =beginこれはコメントで、埋め込みドキュメントコメントと呼ばれます。 類似C#の /**/ に似ています。 =end

浮動小数点型

Ruby は浮動小数点数をサポートします。浮動小数点数は小数を含む数値です。浮動小数点数はクラスFloatのオブジェクトであり、次のいずれかになります。

例

例

123.4 #浮動小数点値 1.0e6 #科学的記数法 4E20 #必須ではありません 4e+20 #指数の前の符号 #浮動小数点型 f1=0.0 f2=2.1 f3=1000000.1 puts f3

算術演算

加減乗除の演算子:+-*/。指数演算子は ** です。

指数は整数である必要はありません。例えば

例

#指数演算 puts 2**(1/4) # 1と4の商は0、そして2の0乗は1 puts 16**(1/4.0)#1と4.0の商は0.25(4分の1)、そして4乗根を取ります。

文字列型

Ruby の文字列は、簡単に言うと 8 ビットのバイト列であり、String クラスのオブジェクトです。

ダブルクォートで囲まれた文字列は置換とバックスラッシュ記法を利用できます。シングルクォートで囲まれた文字列は置換を許可されず、\\ と \' の2つのバックスラッシュ記法のみ使用できます。

例

#!/usr/bin/ruby -w puts 'escape using "\\"'; puts 'That\'s right';

試してみる »

これにより次の結果が生成されます:

escape using "\"
That's right

以下のシーケンスを使用できます。#{ expr }任意の Ruby 式の値を文字列に置換します。ここで、expr は任意の Ruby 式にできます。

例

#!/usr/bin/ruby -w puts "乗算 : #{24*60*60}";

これにより次の結果が生成されます:

相乘 : 86400

例

#!/usr/bin/ruby -w name="Ruby" puts name puts "#{name+",ok"}"

出力結果は次のとおりです:

Ruby
Ruby,ok

バックスラッシュ記法

次の表は、Ruby がサポートするバックスラッシュ記法の一覧です:

表記表される文字
\n改行 (0x0a)
\r復帰 (0x0d)
\f改ページ (0x0c)
\bバックスペース (0x08)
\aベル (0x07)
\eエスケープ (0x1b)
\sスペース (0x20)
\nnn8進数表記(n は 0-7)
\xnn16進数表記(n は 0-9、a-f または A-F)
\cx, \C-xControl-x
\M-xMeta-x (c | 0x80)
\M-\C-xMeta-Control-x
\x文字 x

Ruby 文字列の詳細については、以下を参照してください。Ruby 文字列(String)。

配列

配列リテラルは [] 内にカンマ区切りで定義し、range 定義にも対応しています。

  • (1)配列は [] によるインデックスでアクセスします。
  • (2)代入操作で要素の挿入、削除、置換を行います。
  • (3)+ と - で要素の結合と削除を行い、結果は新しい集合として返ります。
  • (4)<< で元のデータに要素を追加します。
  • (5)* で配列要素を繰り返します。
  • (6)| と & で和集合と積集合の操作を行います(順序に注意)。

例

#!/usr/bin/ruby ary = [ "fred", 10, 3.14, "This is a string", "last element", ] ary.each do |i| puts i end

試してみる »

これにより次の結果が生成されます:

fred
10
3.14
This is a string
last element

Ruby 配列の詳細については、以下を参照してください。Ruby 配列(Array)。

ハッシュ型

Ruby のハッシュは、波括弧内に一連のキー/値ペアを置きます。キーと値の間はカンマと => の並びで区切ります。末尾のカンマは無視されます。

例

例

#!/usr/bin/ruby hsh = colors = { "red" => 0xf00, "green" => 0x0f0, "blue" => 0x00f } hsh.each do |key, value| print key, " is ", value, "\n" end

試してみる »

これにより次の結果が生成されます:

red is 3840
green is 240
blue is 15

Ruby ハッシュの詳細については、以下を参照してください。Ruby ハッシュ(Hash)。

範囲型

範囲(Range)は区間を表します。

範囲は、開始値と終了値を設定して表します。範囲は s..e や s...e を使用して構築するか、Range.new を使用して構築できます。

.. を使用して構築した範囲は、開始値から終了値まで(終了値を含む)を表します。... を使用して構築した範囲は、開始値から終了値まで(終了値を含まない)を表します。イテレータとして使用すると、範囲はシーケンス内の各値を返します。

範囲 (1..5) は値 1, 2, 3, 4, 5 を含み、範囲 (1...5) は値 1, 2, 3, 4 を含みます。

例

#!/usr/bin/ruby (10..15).each do |n| print n, ' ' end

試してみる »

これにより次の結果が生成されます:

10 11 12 13 14 15

Ruby 範囲の詳細については、以下を参照してください。Ruby 範囲(Range)。

その他の拡張