パンくず
Ruby
ライブラリ
Enumerable
概要
Rubyの組み込みライブラリのEnumerableモジュールについて
Enumerableモジュール概要
繰り返しを行なうクラスのための Mix-in。
このモジュールの メソッドは全て each を用いて定義されているので、
インクルード するクラスには each が定義されていなければならない。
Enumerableの各メソッドのサンプル
# encoding: Windows-31J require "pp" class ProgrammingLanguage attr_accessor:name def initialize(name);@name=name;end end class ProgrammingLanguages include Enumerable # =>EnumerableをMix-in attr_accessor:language_list def initialize;@language_list = Array.new;end def add_language(language);@language_list.push(ProgrammingLanguage.new(language));end # Enumerable用にeachを実装 def each @language_list.each do |language| yield language end end end def print_all_language_name(programming_languages) programming_languages.each {|language|print language.name,","} puts "" end programming_languages = ProgrammingLanguages.new puts "■all?メソッド" %w[VB Java Ruby].each {|language|programming_languages.add_language language} print_all_language_name programming_languages ret = programming_languages.all? {|language|language.name.length >= 2} # => すべての要素の言語名が2文字以上なら真 puts "すべての言語名が2文字以上か=#{ret}" programming_languages.add_language "C" print_all_language_name programming_languages ret = programming_languages.all? {|language|language.name.length >= 2} # => Cが1文字なので偽を返却 puts "すべての言語名が2文字以上か=#{ret}" puts "■any?メソッド" ret = programming_languages.any? {|language|language.name == "JavaScript"} # => すべての要素にJavaScriptが含まれていないなら偽 puts "すべての要素にJavaScriptが含まれていないなら真=#{ret}" programming_languages.add_language "JavaScript" print_all_language_name programming_languages ret = programming_languages.any? {|language|language.name.length >= 2} # => JavaScriptを追加したので真を返却 puts "すべての要素にJavaScriptが含まれていないなら真=#{ret}" puts [1,3,5,7].inject(0) {|result, number|result + number} # 総和を求める。0はresultの初期値 puts [1,3,5,7].inject(:+) # 上記と同等 puts [1,3,5,7].reduce(:+) # 上記と同等
出力
■all?メソッド VB,Java,Ruby, すべての言語名が2文字以上か=true VB,Java,Ruby,C, すべての言語名が2文字以上か=false ■any?メソッド すべての要素にJavaScriptが含まれていないなら真=false VB,Java,Ruby,C,JavaScript, すべての要素にJavaScriptが含まれていないなら真=true 16 16 16