`

也说说ruby inject

阅读更多
其实,没有什么太多说的,IE有的先链接过来

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

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

下面的总结的挺好,

完了来回顾一下inject方法两种用法:
enum.inject(init_value) {|memo,obj|  block}
enum.inject{ |memo,obj| block }


第一种,memo以init_value为初始值
第二种,memo以enum里的第一个元素为初始值。


然后,inject可以这么写
(1..4).inject(&:+)


涵义是

{|memo, a| memo.send(sym, a)}


和map那个用法一样

 def tag_names
    @tag_names || tags.map(&:name).join(' ')
  end


涵义是:

class Symbol
  def to_proc
    Proc.new do |obj, *args|
      obj.send self, *args
    end
  end
end


也可以带index的执行
%w(a b c).each_with_index.inject([]){|result, (value,index)| result << value + index.to_s}



所以,一组值的时候

User.all.inject(0){|sum,user|sum += user.followers.count}

或者
User.all.map(&:count).inject(&:+)

其实
User.sum(:filed)



------------------------------------------华丽啥分割----------------------------------------------------------------
挺好的东西收到这吧
精细duck typing控制
duck typing的精神就是行为决定类型,而不是相反

a = []  
#不用  
if a.kind_of? Array then a << 1  
if a.instance_of? Array then a << 1  
#而用  
if a.respond_to? :<< then a << 1  



获取metaclass
这也比较常见了,各种动态伎俩的开始

sing = class << self; self; end  

分享到:
评论

相关推荐

    VC代码 RT_INJECT (实用代码源)

    VC代码 RT_INJECT (实用代码源)VC代码 RT_INJECT (实用代码源)VC代码 RT_INJECT (实用代码源)VC代码 RT_INJECT (实用代码源)VC代码 RT_INJECT (实用代码源)VC代码 RT_INJECT (实用代码源)VC代码 RT_INJECT (实用代码...

    javax-inject-1.0-201002241208.jar.zip

    《Java注射框架——javax.inject详解》 在Java开发中,依赖注入(Dependency Injection,简称DI)是一种设计模式,它能够使代码...同时,javax.inject与Hibernate的整合,让数据访问层的管理也变得更加简洁和规范。

    InjectDLL_injectDll_

    Usage: injectdll.exe [process name] [dll path] [option number]option 1 - CreateRemoteThreadoption 2 - NtCreateThreadExoption 3 - RtlCreateUserThread

    官方jar包javax-inject.jar

    【标题】"官方jar包javax-inject.jar"指的是Java编程语言中的一个官方发布的库文件,主要包含`javax.inject`包下的类和接口。这个jar包是Java依赖注入(Dependency Injection,简称DI)的一个实现,主要用于简化对象...

    vue 解决provide和inject响应的问题

    官网上说provide 和 inject 绑定并不是可响应的。这是刻意为之的。然而,如果你传入了一个可监听的对象,那么其对象的属性还是可响应的。 provide: Object | () =&gt; Object(一个对象或返回一个对象的函数) inject...

    javax.inject.Provider

    Spring 依赖的 javax.inject.Provider

    Ruby Data-Processing ruby数据处理

    2. **Ruby Reduce**: Reduce(也称为fold或inject)函数用于对数组的所有元素进行累积操作,通常用于聚合操作,如求和、乘积或计算平均值。例如,计算数组元素的总和: ```ruby numbers = [1, 2, 3, 4, 5] sum =...

    autoinject小工具

    AutoInject工具简化了这个过程,使得非程序员也能理解和实践这种技术。 首先,我们来了解AutoInject的核心功能。该工具的主要特点是用户友好的界面,用户只需选择待注入的DLL文件和目标进程,即可实现DLL的注入。这...

    javax-inject.jar.zip

    "javax-inject.jar" 是一个专门用于解决此类问题的库,它包含了`javax.inject`包,这个包是Java注射注入(Dependency Injection,简称DI)的一个重要组成部分。在本文中,我们将深入探讨`javax.inject`包的作用、...

    CodeInject.rar

    code inject 逆向工程 做一些工具必备

    ruby实用函数和实例

    此外,Enumerable模块是一组用于遍历和操作集合的强大工具,它包含的`inject`和`reduce`方法可以执行聚合操作,`group_by`则可以按条件对元素分组。 Ruby的模块(Module)和类(Class)系统使得代码组织和复用变得...

    Location IOS13驱动版本,包含inject.dmg和inject.dmg.signature两个文件

    总之,这个压缩包包含的“inject.dmg”和“inject.dmg.signature”文件是iOS 13系统定位服务驱动的更新,提供增强的定位功能和安全性。在使用时,用户需要验证签名以确保文件的合法性,并根据设备的当前iOS版本进行...

    sisu-inject-bean-1.4.2.jar

    sisu-inject-bean-1.4.2.jar

    Ruby-ParallelRuby让并行处理简单和快速

    除了`each`方法,Parallel库还提供了其他方法,如`map`、`inject`等,这些都是并行版本的内置Ruby方法,方便在并行环境下使用熟悉的编程模式。 在实际应用中,理解并行处理的潜在问题也至关重要,如数据竞争、死锁...

    apc_inject.zip_APC_APC inject_inject_inject apc_inject code

    标题 "apc_inject.zip_APC_APC inject_inject_inject apc_inject code" 提及的核心技术是“APC(Asynchronous Procedure Call)注入”,这通常与恶意软件或安全研究相关,特别是针对Windows操作系统的攻击手段。...

    Inject HTTP.zip_Inject HTTP vb6_Inject2Download_http inject_inje

    标题中的"Inject HTTP.zip_Inject HTTP vb6_Inject2Download_http inject_inje"暗示了这个压缩包文件可能包含了关于在VB6(Visual Basic 6)环境下实现HTTP注入的技术和工具。HTTP注入通常指的是向HTTP请求中插入...

    Location IOS12.4驱动版本,包含inject.dmg和inject.dmg.signature两个文件

    "inject.dmg"和"inject.dmg.signature"这两个文件在iOS系统中具有特殊的意义。通常,".dmg"文件是Disk Image的缩写,它是Mac OS X系统中的一个镜像文件格式,用于存储和分发软件。在iOS上下文中,".dmg"文件可能被...

    前端开源库-inject-html

    标签“前端开源”表明这个库是开源的,这意味着源代码公开,开发者可以查看其内部实现,学习和借鉴其中的技术,同时也能够根据自己的需求进行定制和扩展。开源社区通常会提供活跃的讨论和支持,用户可以通过提交问题...

    .javax.inject_1.0.0.jar

    《深入理解Java依赖注入:以javax.inject_1.0.0.jar为例》 在Java开发中,依赖注入(Dependency Injection,简称DI)是一种常见的设计模式,它有助于提高代码的可测试性和可维护性。 javax.inject_1.0.0.jar是Java...

Global site tag (gtag.js) - Google Analytics