【激突】関数型言語 VS オブジェクト指向言語2at TECH【激突】関数型言語 VS オブジェクト指向言語2 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト284:デフォルトの名無しさん 12/04/13 17:30:10.61 >>282 package FizzBuzzGizz; sub new { my ($c, $n) = @_; bless \"$n." } sub comm { my ($t, $r, $s) = @_; $$t =~ /(^\d+)/; 0 == $1 % $r ? \"${_}$s": $t } sub fizz {bless comm((shift), 3, 'Fizz')} sub buzz {bless comm((shift), 5, 'Buzz')} sub gizz {bless comm((shift), 7, 'Gizz')} 1; package main; for (qw(1 3 5 7 15 21 35 105)) { print ${new FizzBuzzGizz($_)->fizz->buzz->gizz} . "\n" } 285:デフォルトの名無しさん 12/04/13 17:31:15.65 Ruby のカオスな部分を前面に押し出して書いてみた class String attr_accessor :srcint private def f(n,s); (@srcint % n == 0) ? (self << s) : (self); end end class Integer private def f(n,s); (self % n == 0) ? (s.srcint = self; s) : (self); end end class Object def fizz; f(3,'Fizz'); end def buzz; f(5,'Buzz'); end def gizz; f(7,'Gizz'); end end p [1,3,5,7,15,21,35,105].map{|n| n.fizz.buzz.gizz } # => [1, "Fizz", "Buzz", "Gizz", "FizzBuzz", "FizzGizz", "BuzzGizz", "FizzBuzzGizz"] p [1,3,5,7,15,21,35,105].map{|n| n.fizz.gizz.buzz } # => [1, "Fizz", "Buzz", "Gizz", "FizzBuzz", "FizzGizz", "GizzBuzz", "FizzGizzBuzz"] 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch