小编Ash*_*her的帖子

Ruby Enumerator - 为什么要完成异常?

在Ruby中迭代一个块很简单 - 它干净利落地完成并继续执行其余的代码.

另一方面,使用枚举器进行迭代会更加混乱.如果您调用:每个没有块,则返回枚举器.:然后可以在Enumerator上调用next来获取每个下一个迭代值.

然后奇怪的部分 - 当迭代完成时,而不是Enumerator返回nil,它抛出一个异常:"迭代到达结束".结果是它甚至没有返回值.

例如:

test = [ 'test_value' ]
enumerator = test.each
enumerator.next
>> "test_value"
enumerator.next
>> StopIteration: iteration reached at end
Run Code Online (Sandbox Code Playgroud)

这样做的原因是,枚举器可以返回零值吗?答案发生在我身上,因为我发布了这个(所以我要发布它),但似乎一定是这样.

如果是这样,这是处理此类问题的典型方式吗?使用Exception来处理基本上按预期执行的代码似乎很奇怪.

ruby exception enumerator

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

Autoconf 使用损坏的功能生成配置(ac_fn_set_status、ac_fn_exit)

我正在尝试为我的项目设置 autoconf。除了在 ./configure 中找不到 ac_set_<...> 函数之外,我的一切都“正常”工作。如果我直接运行它们,它们在configure.status中工作正常。

具体来说,我在 as_fn_set_status 和 as_fn_exit 方面遇到问题。

如果我手动编辑配置文件并将这两个函数移至配置脚本的顶部,则一切正常。

为了达到这一点,我:

  1. 编写configure.ac
  2. 运行 autoreconf -i
  3. 运行./配置

结果行类似于:

./configure: line 1366: as_fn_set_status: command not found
Run Code Online (Sandbox Code Playgroud)

有3-4行发生错误。

关于什么可能产生这种效果有什么想法吗?这是我的configure.ac:

##########################################
#  Autoconf Configuration File for RPDB  #
##########################################

#   RPDB: An Object-Oriented Wrapper for Oracle's Berkeley Database (BDB/libdb),
#   which is available at: http://www.oracle.com/technology/software/products/berkeley-db/index.html

###########################
#  Init Autoconf >= 2.61  #
###########################

AC_CANONICAL_SYSTEM

AC_PREREQ(2.61)
AC_INIT([rpdb], [0.1.0], [asher@ridiculouspower.com])

AC_CONFIG_AUX_DIR([.])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_FILES([Makefile])
AC_CONFIG_HEADERS([config.h])

AM_INIT_AUTOMAKE

#################################
#  Check for Library Functions  #
#################################

AC_FUNC_ERROR_AT_LINE …
Run Code Online (Sandbox Code Playgroud)

autoconf function configure

2
推荐指数
1
解决办法
1549
查看次数

标签 统计

autoconf ×1

configure ×1

enumerator ×1

exception ×1

function ×1

ruby ×1