草庐IT

c++ - 异常保证和按值传递

全部标签

ruby - 如何将带回溯的 ruby​​ 异常格式化为字符串

我有一个异常e,我想将它转换成一个与标准ruby​​输出完全相同的字符串在未捕获异常时在stderr上。初始代码给出了错误的堆栈跟踪顺序,并且缩进不正确。与其编写我自己的代码,我更希望看到一些“oneliner”。你是怎么做到的? 最佳答案 这将是相同的。puts"#{$@.first}:#{$!.message}(#{$!.class})",$@.drop(1).map{|s|"\t#{s}"}或者,使用e:puts"#{e.backtrace.first}:#{e.message}(#{e.class})",e.backtrac

Ruby 构造函数和异常

Ruby新手,我想弄清楚使用什么习惯用法来将某些整数值限制为类的构造函数。根据我目前所做的,如果我在initialize()中引发异常,该对象仍会创建,但将处于无效状态(例如,某些nil实例变量中的值)。我不太明白我应该如何限制这些值而不进入看起来不必要的大步骤,例如限制对new()的访问。所以我的问题是,我可以通过什么机制来限制实例化对象的值范围? 最佳答案 嗯,你是完全正确的,即使initialize引发异常,对象仍然存在。然而,任何人都很难坚持引用,除非你从initialize中泄漏self就像我刚写的下面的代码一样:>>cl

ruby-on-rails - 传递对象或 id

这只是一个关于最佳实践的问题。假设您有一个采用一个参数的方法。这个参数是一个对象的id。理想情况下,我希望能够直接传递对象的ID,或者只传递对象本身。最优雅的方法是什么?我想到了以下内容:defmethod_nameobjectobject_id=object.to_param.to_i###dowhateverneedstobedonewiththatobject_idend因此,如果参数已经是一个id,它几乎保持不变;如果它是一个对象,它会得到它的ID。这行得通,但我觉得这可能会更好。此外,to_param返回一个字符串,在某些情况下它可能返回一个“真实”字符串(即“string”

ruby - 为什么我们将 0 作为参数传递给 "exit"?

在艰难地学习ruby这本书中,我找到了退出程序的语法:Process.exit(0)为什么参数0被传递到这里的exit方法中,即使我传递另一个整数或不传递任何参数它都有效?0有什么意义? 最佳答案 这是一个“退出代码”。此退出代码在某些情况下具有特殊含义(参见示例http://tldp.org/LDP/abs/html/exitcodes.html)你可以传递任何你想要的,如果后面的代码没有被捕获,这将没有任何效果。这里的“0”代表“一切正常!” 关于ruby-为什么我们将0作为参数传递

ruby - 将选项传递给 thor 中的模板函数

我正在寻找一种在thors模板操作中将选项传递给ERB模板引擎的方法。我偶然发现了像这样使用thors模板操作的bundlercli源代码:opts={:name=>name,:constant_name=>constant_name,:constant_array=>constant_array,:author_name=>author_name,:author_email=>author_email}template(File.join("newgem/Gemfile.tt"),File.join(target,"Gemfile"),opts)但是当我在我的thor任务中添加这样的

Ruby:按值查找散列中的项目

我目前正在使用如下所示的ruby​​哈希:{"employee"=>[{"name"=>"john","level"=>"1","position"=>"S1"},{"name"=>"bill","level"=>"2","position"=>"S2"}]}这是员工的两个例子,我需要能够通过值(value)观来吸引员工。例如,我想获得级别==2的所有员工,或位置==S1的所有员工。我如何在Ruby中执行此操作? 最佳答案 使用Hash#select或Array#select.level_2_employees=infoHash["

ruby - 正确的 Assert_Raise 单元测试和异常类的使用

我正在研究Exercise49ofLearnRubytheHardWay练习要求为提供的每个函数编写单元测试。我正在测试的项目之一是是否引发了适当的异常。建议我们为此使用assert_raise。这是我正在测试的代码:classParserError下面是函数parse_verb的测试:deftest_parse_verblist_one=[Pair.new(:verb,'go'),Pair.new(:noun,'king')]assert_equal(parse_verb(list_one),Pair.new(:verb,'go'))list_two=[Pair.new(:noun,

Ruby one liner 将数组元素传递到带有分隔符的字符串中

我有一个这样的数组:myarray=['value1','value2','value3']我正在寻找这样的单元素数组:mynewarray=['value1|value2|value3']我知道如何使用each并连接成一个字符串来做到这一点,但我想知道是否有一种单行代码和漂亮的Ruby方式来做到这一点...... 最佳答案 您可以使用Array#join方法。myarray.join('|')Array#joindoc:返回通过将数组的每个元素转换为一个字符串,由sep分隔。["a","b","c"].join#=>"abc"["

c - Ruby 解释器的嵌入 API 的文档在哪里?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭5年前。Improvethisquestion我正在寻找有关将Ruby解释器嵌入到C或C++程序以及用于该目的的API的全面的在线文档资源。Pickaxe书中关于此的部分非常好,但我的版本指的是Ruby1.8,我对当前的ruby​​版本范围很感兴趣,即1.8.x、1.9.x和2.0,并且有很多跨该版本范围的嵌入处理之间的差异。作为引用,有问题的Ruby解释器是来自http://www.ruby-lang.org/

ruby - rake 将参数传递给相关任务

这是我目前运行rak相关任务的方式task:test=>[:prepare_testdir,:run_tests]目前这两个依赖任务没有参数。但是我需要向其中一项任务添加参数。它应该像在命令行上一样运行rakeprepare_testdir[mydir]我如何将这个新参数传递给这个task:test=>[:prepare_testdir,:run_tests]我试过了task:test=>[:prepare_testdir[mydir],:run_tests]和task:test=>[:prepare_testdir['mydir'],:run_tests]两者都不工作。提前致谢