草庐IT

test_proc

全部标签

ruby - 什么是 proc 和 lambda?请实际例子

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whentouselambda,whentouseProc.new?(我知道它已经被问过好几次了,但我找不到满意的答案)有人能解释一下Blocks、Procs和Lambdas以及为什么应该使用一个而不是另一个,什么情况下应该使用proc,类似的和/或lambda。对计算机内存也有影响。请提供实际示例。

ruby - 在 Ruby 中将方法传递给 Proc

在Ruby中,symbol可以方便地转换为Proc,例如:%{johnterryfiona}.map(&:capitalize)#->%{JohnTerryFiona}有没有办法将方法传递给Proc,以缩短以下代码:["john","terry","fiona"].eachdo|n|assertn.valid_encoding?end谢谢。 最佳答案 %w{johnterryfiona}.map(&:valid_encoding?).each(&method(:assert)) 关于ru

ruby - Lambda 与 Proc 在内存和效率方面的对比

我知道应该在不同的情况下使用Procs和lambda(lambda检查参数的数量等),但它们占用的内存量是否不同?如果是,哪个更有效? 最佳答案 Lambdas和Procs之间存在一些差异。Lambda具有所谓的“小返回”。这意味着Lambda会将流程返回给调用它的函数,而Proc将从调用它的函数返回。defproc_demoProc.new{return"returnvaluefromProc"}.call"returnvaluefrommethod"enddeflambda_demolambda{return"returnval

ruby-on-rails - Ruby 中的 Proc.new : when do I need to use it?

date_validator在其示例中有评论:UsingProc.newpreventsproductioncacheissues这是否意味着,在我的代码中的任何地方,我都使用与当前时间相关的方法(Time.now、1.day.since(Time.zone.now)等),我应该用Proc.new{}?我不完全理解这一点,因为更换了time_now=Time.now.utc与time_now=Proc.new{Time.now.utc}对我来说没有意义(返回了新类型的对象)。那么,问题是,我应该何时以及如何将Proc.new与时间相关的方法一起使用?这是否仍然适用于最新版本的Ruby(

ruby - Rails3 : Functional tests fail with NoMethodError: undefined method `user' for nil:NilClass

我将Devise(v2.1.2)与Omniauth一起用于用户验证。我正在对一个Controller进行功能测试,该Controller将JSON对象作为POST主体,因此使用了thisquestion中的技术。设置原始POST正文。这适用于开发,但是当我运行测试时,我在一个完全未经身份验证的方法上遇到异常:NoMethodError:undefinedmethod`user'fornil:NilClass示例测试:test"shouldbeabletocreateanitem"dom=FactoryGirl.attributes_for(:item)raw_post:create,{

ruby - 为什么 Symbol#to_proc 有这种类型的行为?

我找到了这个在Ruby中实现自定义Symbol#to_proc的示例代码:classSymboldefto_procputs"InthenewSymbol#to_proc!"Proc.new{|obj|obj.send(self)}endend它包含额外的“puts...”字符串以确保它不是内置方法。当我执行代码时p%w{davidblack}.map(&:capitalize)结果是:InthenewSymbol#to_proc!["David","Black"]但为什么不是这样呢?InthenewSymbol#to_proc!["David"]InthenewSymbol#to_p

ruby - 在 Ruby 中使用 String#to_proc 实现 to_s(2)

我正在学习一元运算符&。关于在方法调用的参数中使用&有一些很好的问题。通常格式类似于some_obj.some_method(&:symbol):Rubyunaryoperator&onlyvalidonmethodargumentsWhatisthefunctionalityof“&:”operatorinruby?Whatdoesmap(&:name)meaninRuby?UnaryAmpersandOperatorandpassingprocsasargumentsinRuby似乎主要思想是当一元运算符放在符号前面时,ruby调用:symbol上的to_proc方法。因为Symb

带有参数的 Ruby Proc

我正在尝试将参数发送到Rubyprocp1=[54,21,45,76,12,11,67,5]qualify=proc{|age,other|age>other}putsp1.select(&qualify(30))这是我得到的错误:undefinedmethod`qualify'formain:Objectage来自array的迭代,我想要最后一个parameter(30)进入proc。proc是用于此目的的正确工具吗?我是proc的新手。我不清楚如何在其中获取该parameter。 最佳答案 为了在select谓词中使用quali

ruby-on-rails - Ruby on Rails,rake 数据库 :seed or db:reset - how do you dictate which mode (development/test/production)?

使用RubyonRails,当您使用rakedb:seed或db:reset重置或重新播种数据库时-您如何指定操作要处于哪种模式(开发/测试/生产)?我使用Sqlite进行开发,使用postgresql进行测试和生产——但使用不同的连接参数。我似乎无法控制Rails在我的开发箱(我在虚拟机Ubuntu13.l0中运行)或在Heroku上运行的模式。此外,当您在Heroku上运行应用时,您如何决定在哪种模式(开发/测试/生产)中运行您的应用?Heroku文档建议的方式不起作用(也就是说,将单行放入Procfile网络:bundleexecunicorn-p$PORT-E$RACK_ENV

c - Ruby C 扩展如何存储 proc 以供以后执行?

目标:允许c扩展接收延迟执行的block/proc,同时保留当前执行上下文。我在c中有一个方法(暴露给ruby​​),它接受一个callback(通过VALUEhash参数)或一个block。//Forbrevity,letsassumem_CBYOissetuptomakeaCBYOmoduleavailabletorubyexternVALUEm_CBYO;VALUECBYO_add_callback(VALUEcallback){if(rb_block_given_p()){callback=rb_block_proc();}if(NIL_P(callback)){rb_rais