繰り返しを簡単に。
メガネ男子が近頃受けているらしいということで、プロフィールに愛用メガネの画像を載せてみた。だから何だ、この野郎。
それはそうと、Enumerableなるモジュールをインクルードすると繰り返しが簡単に行えるらしいということで試してみた。
#!/usr/bin/env ruby class Product def initialize(pid, name) @pid = pid @name = name end attr_accessor:pid attr_accessor:name # この演算子を定義しておくと、sort、max、minメソッドが使える # sortなどはこの演算子を利用して実装しているため def <=>(product) return self.pid <=> product.pid end end class Products include Enumerable def initialize @products = Array.new @products << Product.new(1, 'あめ') @products << Product.new(3, '防災ずきん') @products << Product.new(2, 'バールのようなもの') end # このメソッドを定義すると、find、map、include?などが # 使えるようになる # mapなどはこのメソッドを利用して実装しているため def each @products.each do |product| yield(product) end end end products = Products.new puts 'findする' found_product = products.find { |product| product.pid == 2} puts "pid:#{found_product.pid}, name:#{found_product.name}" puts 'ソート前' products.each do |product| puts "pid:#{product.pid}, name:#{product.name}" end puts 'ソート後' products.sort.each do |product| puts "pid:#{product.pid}, name:#{product.name}" end
結果。
findする pid:2, name:バールのようなもの ソート前 pid:1, name:あめ pid:3, name:防災ずきん pid:2, name:バールのようなもの ソート後 pid:1, name:あめ pid:2, name:バールのようなもの pid:3, name:防災ずきん
簡単すぎてビックリ。
- 作者: Dave Thomas,Chad Fowler,Andy Hunt,まつもとゆきひろ,田和勝
- 出版社/メーカー: オーム社
- 発売日: 2006/08/26
- メディア: 大型本
- 購入: 7人 クリック: 270回
- この商品を含むブログ (152件) を見る