- ÂÛ̳»ÕÕÂ:
- 0
|
Ҳ˵˵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´úÂëºÒåÊÇ
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´úÂë------------------------------------------»ªÀöɶ·Ö¸î----------------------------------------------------------------
ͦºÃµÄ¶«Î÷ÊÕµ½Õâ°É
¾«Ï¸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
¸´ÖÆ´úÂë |
|