[Ruby]タイプと方法


1.標準タイプ
1.1数値
Rubyは整数と浮動小数点数をサポートします.整数は任意の長さであり、一定範囲の整数は内部にバイナリ形式で格納され、Fixnumクラスのオブジェクトであり、範囲外の整数はBugnumクラスのオブジェクトに格納されます.Rubyは、それらの間の往復変換を自動的に管理します.
整数を書くときは、オプションのプリアンブルを使用し、オプションの進数インジケータ(0 bはバイナリ、0は8進数、0 dは10進数、0 xは16進数)を使用し、後に1つの指が適切に進数され、下線は数字列で無視されます.
小数点またはべき乗を持つ数字の字面量は浮動小数点オブジェクトに変換され、小数点の前後に「1.0 e 3」を「1.e 3」と書く必要があり、RubyはFixnumクラスのe 3メソッドを呼び出そうとします.
整数は、timesが回数を表すなど、いくつかの反復器もサポートします.たとえば、次のようにします.
6.times {puts '-'}

さらにuptoとdowntoは、2つの整数の間でそれぞれ上下に反復します.たとえば、次のようにします.
1.upto(10) {|i| puts i}
10.downto(1) {|i| puts i}

Numericクラスは、次のようなより一般的なstepメソッドを提供します.
1.step(100, 10) {|i| puts i}

1.2文字列
Ruby文字列は8バイトのシーケンスであり、通常は印刷可能な文字を含むが、これは必要条件ではなく、文字列には2進データも含まれ、文字列はStringクラスのオブジェクトである.
文字列の字面量には、「」などの様々なエスケープシーケンスを配置し、リターン改行を表すことができます.また、「#{}」シーケンスを使用して、任意のRubyコードの値を文字列に入れることができます.コードがグローバル変数、クラス変数、またはインスタンス変数である場合、カッコは無視できます.
文字列の字面量を構築するには3つの方法があります.「%q」と「%Q」は、それぞれ、単一引用符と二重引用符の文字列の定義を開始します.たとえば、次のようになります.
%q/Hello World!/
%Q/Hello #{name}/

qまたはQの後に続く文字は境界記号であり、一致する終了記号が発見されるまで文字列が読み出されます.そうしないと、次の同じ境界記号が現れるまで文字列が読み出されます.
最後に、here documentを使用して文字列を構築できます.たとえば、次のようになります.
string = < 
  

"here document" "<

string = < 
  

Ruby 75 , String#chmop , :

puts "Hello World!\r
".chomp

String#splitメソッドでは、 に づいて を できます.たとえば、 のようになります.
stringlist = 'Hello John!'.split(/ /)
puts stringlist[1]

String#squeezeメソッドでは、 のような を できます.
puts 'Hello World!!!'.squeeze('!')

String#scanメソッドは、 から に する を します.たとえば、 のようにします.
puts 'Hello World!'.scan(/e.*l/)

1.3
の で も な い は シーケンスで、Rubyでは「.」を います.と「...」[ ](Interval)オペレータを してシーケンスを します.2つの の は、 じた を し、3つの の は、 の を まない じた を します.to_を できますaメソッドは を に し、 えば:
(1..10).to_a
('bar'..'bat').to_a

は、 な くの を し、 のような でコンテンツをテストします.
digits = 0..9
digits.include?(5)
digits.min
digits.max
digits.reject {|i| i<5}
digits.each {|digit| dial(digit)}

Rubyは、 が したオブジェクトに づいて を できます. の は、これらのオブジェクトがsuccに する としてシーケンス の のオブジェクトを さなければならないことです.また、これらのオブジェクトは「<=>」を して できる があります.「<=>」オペレータは、2つの を し、 の が2 の より さいか、 しいか、またはそれより きいかに づいて、-1、0または+1を します.たとえば、 のようにします.
class Test
  include Comparable
  attr :value
  def initialize(value)
    @value = value
  end
  def <=>(other)
    self.value <=> other.value
  end
  def succ
    Test.new(@value.succ)
  end
end
myvalue = Test.new(1)..Test.new(9)
myvalue.to_a
myvalue.include?(Test.new(2))

は として できます. の 1の の がtrueの 、それらは き、 の 2の の がtrueの 、それらは じます.たとえば、 のようにします.
while line = gets
  puts line if line =~ /start/ .. line =~ /end/
end

のもう1つの は、 テストです.いくつかの が の に るかどうかを するには、「===」オペレータを します.たとえば、 のようにします.
(1..10) === 5

1.4
は、パターンに づいて をマッチングするために されます.Rubyは み みのサポートを し、マッチングと をより かつ にします. はRegexpタイプのオブジェクトです.たとえば、 び しコンストラクタを するか、 「/pattern/」と「%r{pattern}」を して できます.
Regexp.new('^[a-z]+')
/^[a-z]+/
%r{^[a-z]+}

オブジェクトがあれば、Regexp#matchまたはマッチングオペレータ"=~"と"!~"を して をマッチングできます. オペレータは、StringオブジェクトとRegexpオブジェクトを します.たとえば、 のようになります.
name = 'John'
name =~ /o/
/a/ =~ name

オペレータは、いくつかのRuby を する が した の を します.「$&」はパターンに する を 、「$`」は する の を 、「$'」は した の を る.
には、 を と させるためのモードが まれます. の に を すると、 の に します.
2.
2.1
キーワードdefを してメソッドを できます.メソッド は で まる があります.クエリを すメソッド は、 「?」エンディング、 えばinstance_of?. オブジェクトのメソッドが され、「!エンディング、 えばchopとchop!、1つ のメソッドは、 された を し、2つ はその でオブジェクトを します. り てられるメソッドは、「=」という で わります.
メソッドには、カッコにリストされているローカル であるパラメータも する があります.メソッドパラメータの のかっこはオプションです.たとえば、 のようになります.
def method1(arg1, arg2, arg3)
end
def method2
end

Rubyでは、メソッドパラメータのデフォルト を できます.たとえば、 のようになります.
def method(arg='John')
end

のパラメータを したり、1つのパラメータで のパラメータを したりするには、パラメータ にアスタリスク「*」を します.たとえば、 のようにします.
def method(*arg) 
end

メソッドを び すと、1つのblockで けることができ、 yieldを してメソッドの からこのblockを び すことができます.ただし、メソッド の のパラメータ が「&」の 、 するblockはProcオブジェクトに され、このパラメータに が り てられます.たとえば、 のようにします.
def method(&block)  
  block.call()
end
method() {puts "Hello World!"}

2.2 び し
メソッドは、 、メソッドの 、オプションのパラメータ、blockを して び すことができます.クラスメソッドまたはモジュールメソッドでは、 はクラスまたはモジュールの です. が されている 、デフォルトはselfです. び されるメソッドごとに が されます.Rubyには されているメソッドから できるreturn があり、returnが でない はメソッド の の の を します.
メソッド では、 のパラメータの にアスタリスクを けると、このメソッド び しに された のパラメータが にロードされます. を する は、 パラメータの にアスタリスク「*」を けます.たとえば、 のようにします.
def method(args1, args2, args3)
  puts "#{args1} #{args2} #{args3}"
end
method(1, 2, 3)
method(1, *[2, 3])