小编hor*_*guy的帖子

枚举器如何在Ruby 1.9.1中工作?

这个问题不是关于如何在Ruby 1.9.1中使用枚举器,而是我很好奇它们是如何工作的.这是一些代码:

class Bunk
  def initialize
    @h = [*1..100]
  end

  def each
    if !block_given?
      enum_for(:each)
    else
      0.upto(@h.length) { |i|
        yield @h[i]
      }
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我可以使用e = Bunk.new.each,然后e.next,e.next获取每个连续的元素,但它究竟是如何暂停执行然后在正确的位置恢复?

我知道,如果0.uptoFiber.yield它替换的产量很容易理解,但这不是这里的情况.这是一个普通的老yield,所以它是如何工作的?

我看了enumerator.c,但对我来说这是不可理解的.也许有人可以在Ruby中提供一个实现,使用光纤,而不是1.8.6样式的基于延续的枚举器,这一切都清楚了吗?

ruby enumerators fiber ruby-1.9

8
推荐指数
1
解决办法
5282
查看次数

Lisp的哪些特性存在于Ruby中?

我已经读过Ruby继承了Lisp的许多功能.

Ruby有哪些特性可能具有Lisp遗产?

ruby lisp

7
推荐指数
1
解决办法
377
查看次数

红宝石顶层定义的方法在哪里?

在顶层,方法定义应该导致私有方法开启Object,测试似乎证实了这一点:

def hello; "hello world"; end

Object.private_instance_methods.include?(:hello) #=> true
Object.new.send(:hello) #=> "hello world"
Run Code Online (Sandbox Code Playgroud)

但是,以下也适用于顶层(self.meta是本征类main):

self.meta.private_instance_methods(false).include?(:hello) #=> true
Run Code Online (Sandbox Code Playgroud)

似乎该hello方法同时在main和eigen的本征类上定义Object.这是怎么回事?请注意,该false参数用于private_instance_methods从方法列表中排除超类方法.

ruby singleton metaclass ruby-1.9

7
推荐指数
1
解决办法
2349
查看次数

什么是可用于C的好的矩阵操作库?

我在C中进行了大量的图像处理,我需要一个好的,相当轻量级的,最重要的是具有许可许可证的FAST矩阵操作库.我主要关注仿射变换和矩阵求逆,所以我不需要太复杂或臃肿的东西.

主要是我想要一些非常快的东西(可能使用SSE?),一个干净的API和(希望)由许多unix包管理系统预先打包.

请注意,这适用于C而不是C++.

谢谢

:)

math graphics image-manipulation image matrix

7
推荐指数
3
解决办法
1827
查看次数

一个objc语法突出显示支持多种语言的库?

我来自ruby和python世界,我们有许多库可以语法突出显示来自多种语言的任意代码.我在objc生态系统中寻找类似的东西,但我似乎无法找到这样的,有可用吗?

Ruby中的等价库是CodeRayPygments for Python,

提前致谢!

cocoa syntax-highlighting objective-c

7
推荐指数
1
解决办法
3412
查看次数

如何在Emacs中显示函数原型?

在C模式下,我可以使用M-跳转到一个函数.在函数名称....有没有办法,我可以简单地显示函数原型?(最好是工具提示左右)我经常很难记住给定函数所需的确切顺序和类型.

c emacs etag

6
推荐指数
2
解决办法
2471
查看次数

有可能将核心文件恢复为正在运行的程序吗?

我有一个工具来生成我的C程序正在运行的快照,以corefiles的形式.

是否有可能将这些核心文件作为可执行程序恢复生机?如果是这样,我该怎么做?是否有任何图书馆已经这样做了?

我正在研究*nix系统.

c c++ debugging core-file

6
推荐指数
1
解决办法
106
查看次数

PE格式的DOS标题中的"e_lfanew"是什么意思?

IMAGE_DOS_HEADERPE(Windows可执行文件)格式中有一个称为的字段e_lfanew,它起着非常重要的作用,因为它指向实际的PE头数据.

我的问题是,"e_lfanew"实际上代表什么?这是什么意思?它太神秘了.

编辑:我不是在问它做了什么,我知道它做了什么,我想知道这些字母e_lfanew实际上代表什么,为什么给它这个名字?

windows portable-executable

6
推荐指数
1
解决办法
2703
查看次数

我如何在gdb中单步执行嵌套函数调用?

有时我想调试这样的函数:my_func1(my_func2(my_func3(val)));

有没有办法可以在gdb中单步执行这个嵌套调用?我想逐步执行my_func3,然后是my_func2,然后是my_func1等

gdb

5
推荐指数
1
解决办法
1万
查看次数

如何在 osx 上使用调试符号从源代码编译 ruby​​?

我正在尝试使用调试符号从源代码编译 Ruby。我没有使用rbenvorrvm等。

我已经试过了

./configure optflags="-O0" debugflags="-g3 -ggdb"

无济于事:((调试器声称它没有符号)

谢谢!

ruby makefile compilation rbenv

5
推荐指数
1
解决办法
347
查看次数