`
simohayha
  • 浏览: 1387559 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

一个创建闭包的小技巧

    博客分类:
  • ruby
阅读更多
一个小技巧,在Ola Bini 的blog上看到的。

假设你想要这样一个类:
创建这个类的时候send一个block给它,然后在后面可以通过某个方法名来调用这个block。
class DoSomething 
  def initialize   
    (class << self; self; end).send :define_method, :call do     
      yield   
    end 
  end
end
d = DoSomething.new do puts "hello world"
  end
d.call
d.call

   
分享到:
评论
2 楼 simohayha 2008-06-26  
对呀这边最妙的就是(class << self; self; end)这个闭包了。哈哈
1 楼 笨笨狗 2008-06-26  
(class << self; self; end).class_eval do
    #这里面定义一些单例方法,貌似也不错,就不限于call了,哈哈
end

相关推荐

    Java闭包 Java闭包

    在2013年发布的 JavaSE8 中包含一个叫做 Lambda Project 的计划,在 JSR-335 草案 中有描述。 JSR-335 将闭包引入了 Java 。闭包在现在的很多流行的语言中都存在,例如 C++、C# 。闭包允许我 们创建函数指针,并把...

    JavaScript闭包函数

    闭包的创建相对容易,人们甚至会在不经意间创建闭包,但这些无意创建的闭包却存在潜在的危害,尤其是在比较常见的浏览器环境下。如果想要扬长避短地使用闭包这一特性,则必须了解它们的工作机制。而闭包工作机制的...

    离散数学-关系,集合,求自反闭包,对称闭包,传递闭包

    离散数学-关系,集合,求自反闭包,对称闭包,传递闭包 离散数学-关系,集合,求自反闭包,对称闭包,传递闭包 离散数学-关系,集合,求自反闭包,对称闭包,传递闭包 离散数学-关系,集合,求自反闭包,对称闭包...

    求闭包和最小依赖集

    求闭包和最小依赖集

    数据库求属性集闭包&函数依赖闭包

    声明:以下仅个人观点,若有错误,敬请指正O(∩_∩)O~ 关键点 1) 将函数依赖用multimap,string&gt; 存储,因为函数依赖可能...对每一个子集求其闭包,记为Ri+;然后求Ri+的所有子集记为(Ri+)j;最后做映射Rià(Ri+)j。

    JS匿名函数、闭包

    但是,当函数返回了一个闭包时,这个函数的作用域将会一直在内存中保存到闭包不存在为止;使用闭包可以在JavaScript中模仿块级作用域(JavaScript本身没有块级作用域的概念),要点如下: 创建并立即调用一个函数...

    关系闭包的计算

    实验目的:熟悉warshall算法,...实验内容:从键盘输入一个关系的关系矩阵,自动求出自反闭包、对称闭包和传递闭包。 计算传递闭包用Warshall算法。 #include&lt;iostream&gt; using namespace std; #define N 4 class jz

    内存泄露,闭包 内存泄露,闭包 内存泄露,闭包

    内存泄露,闭包 内存泄露,闭包 内存泄露,闭包

    计算NFA中ε闭包

    计算NFA中各个状态的闭包,从键盘上输入一个NFA的描述信息(输入格式自行定义),将 该NFA的描述信息保存到合适的数据结构中,然后计算出NFA中每个状态的ε_closure。

    JAVASCRIPT闭包详解

    所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变 量也是该表达式的一部分。闭包是 ECMAScript (JavaScript)最强大的特性之一,但用好闭包的前提是必须 理解...

    C语言实现三种闭包算法(传递,自反,对称闭包)

    C语言实现三种闭包算法,能够实现传递,自反,对称闭包

    Analog一个基于闭包的微日志包

    Analog - 一个基于闭包的微日志包

    极小S-负传递闭包的一个求解方法

    主要研究了负传递的性质,利用余蕴涵的概念,给出了有限论域上模糊关系的极小S-负传递闭包的一个求解方法,进一步丰富了模糊关系传递性的对偶性质——负传递性的研究。

    第十一课 闭包小例子-011

    第十一课 闭包小例子学习目录闭包生成图形组件一.闭包生成图形组件这个小例子中不仅包含闭包的知识,更包括了js设计模式中的模块化模式以及策略模式的知识,所以虽然是

    SuperClosure一个允许闭包序列化的PHP库

    SuperClosure:一个允许闭包序列化的PHP 库

    闭包问题html

    闭包文件

    Swift之闭包ClosureDemo

    Swift之闭包ClosureDemo

    Javascript 闭包完整解释

    Javascript 闭包完整解释

    用C++程序求出等价闭包

    离散数学中,有一个关系的等价闭包。此文件可用C++编程求出一个关系的等价闭包。

    javascript 闭包

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。

Global site tag (gtag.js) - Google Analytics