feiyang10086 ·¢±íÓÚ 2011-12-12 21:30

Ҳ˵˵ruby inject


Ҳ˵˵ruby inject











Æäʵ£¬Ã»ÓÐʲô̫¶à˵µÄ£¬IEÓеÄÏÈÁ´½Ó¹ýÀ´

http://biyeah.iteye.com/blog/1286449

http://www.iteye.com/topic/56291

ÏÂÃæµÄ×ܽáµÄͦºÃ£¬

ÍêÁËÀ´»Ø¹ËÒ»ÏÂinject·½·¨Á½ÖÖÓ÷¨£º



Ruby´úÂë1.enum.inject(init_value) {|memo,obj|block}
2.enum.inject{ |memo,obj| block }µÚÒ»ÖÖ£¬memoÒÔinit_valueΪ³õʼֵ
µÚ¶þÖÖ£¬memoÒÔenumÀïµÄµÚÒ»¸öÔªËØÎª³õʼֵ¡£


È»ºó£¬inject¿ÉÒÔÕâôд



Ruby´úÂë1.(1..4).inject(&:+)º­ÒåÊÇ




Ruby´úÂë1.{|memo, a| memo.send(sym, a)}ºÍmapÄǸöÓ÷¨Ò»Ñù




Ruby´úÂë1.def tag_names
2.   @tag_names || tags.map(&:name).join(' ')
3. end
º­ÒåÊÇ£º




Ruby´úÂë1.class Symbol
2.def to_proc
3.    Proc.new do |obj, *args|
4.      obj.send self, *args
5.    end
6.end
7.endÒ²¿ÉÒÔ´øindexµÄÖ´ÐÐ



Ruby´úÂë1.%w(a b c).each_with_index.inject([]){|result, (value,index)| result << value + index.to_s} ËùÒÔ£¬Ò»×éÖµµÄʱºò




Ruby´úÂë1.User.all.inject(0){|sum,user|sum += user.followers.count}»òÕß



Ruby´úÂë1.User.all.map(&:count).inject(&:+)Æäʵ



Ruby´úÂë1.User.sum(:filed)------------------------------------------»ªÀöɶ·Ö¸î----------------------------------------------------------------
ͦºÃµÄ¶«Î÷ÊÕµ½Õâ°É
¾«Ï¸duck typing¿ØÖÆ
duck typingµÄ¾«Éñ¾ÍÊÇÐÐΪ¾ö¶¨ÀàÐÍ£¬¶ø²»ÊÇÏà·´




Ruby´úÂë1.a = []   
2.#²»Óà  
3.if a.kind_of? Array then a << 1   
4.if a.instance_of? Array then a << 1   
5.#¶øÓà  
6.if a.respond_to? :<< then a << 1    »ñÈ¡metaclass
ÕâÒ²±È½Ï³£¼ûÁË£¬¸÷ÖÖ¶¯Ì¬¼¿Á©µÄ¿ªÊ¼




Ruby´úÂë1.sing = class << self; self; end   

2gua ·¢±íÓÚ 2011-12-13 12:29

ÊÇ×ܽáµÃºÃ¡£

rubyish ·¢±íÓÚ 2011-12-21 13:08

ͦºÃ:em03:

2gua ·¢±íÓÚ 2012-01-02 11:08

.inject£¬ÎÒ»¹ÊÇÂùϲ»¶¡£

rubyish ·¢±íÓÚ 2012-01-02 22:15

ºÜÓÐÓõÄŶ

gr33n ·¢±íÓÚ 2012-01-05 16:31

Õâ×ܽáµÄͦºÃ£¬ Âùϲ»¶Å¶¡£
Ò³: [1]
²é¿´ÍêÕû°æ±¾: Ҳ˵˵ruby inject