草庐IT

exec_proc

全部标签

ruby - proc函数相对于方法有什么优势

我在ProjectEuler上解决了一些问题我提到我总是在proc函数中包装短方法。我问自己“为什么?”。答案是“我不知道。可能是因为它很短?”。那么proc函数相对于普通方法的优势是什么,除了它们很短:)#Procis_prime=proc{|number|!((number%2==0)||(3..Math.sqrt(number).to_i).step(2).any?{|n|(number%n).zero?})}#Ordinarymethoddefis_prime(number)!((number%2==0)||(3..Math.sqrt(number).to_i).step(2)

ruby - Ruby 中奇怪的 Proc 错误

我有一个方法接受将被调用的lambda或将被评估的字符串。为什么以下方法会失败:deftest(expr)expr=expr.respond_to?(:call)?expr:->{eval(expr)}expr.callendtest'puts1'#=>TypeError:can'tconvertProcintoString但这一个有效:deftest(expr)foo=exprexpr=expr.respond_to?(:call)?expr:->{eval(foo)}expr.callendtest'puts1'#=>1 最佳答案

ruby exec 使用我的 ~/.bashrc 中的函数

在我的~/.bashrc中,我有一个函数:functionsayHi(){echo"hi,$@"}在Ruby中我想:`sayHi"friend"`但是,sayHi在ruby​​运行exec或system的任何上下文中都“找不到”。如何让Ruby使用我的.bashrc中的函数? 最佳答案 您的.bashrc仅针对交互式shell运行。当您在Ruby中使用反引号执行命令时,它不会在交互式shell中执行该命令。您可以通过运行bash-i强制使用交互式shell。例如,要在交互式shell下运行命令,请使用:`bash-ic'sayHi"

ruby - 在 Ruby 中否定谓词 Proc

我有一个Proc,它是谓词。Proc.new{|number|number.even?}有没有办法以某种方式创建另一个具有相反含义的Proc?我无法更改Proc的“主体”,因为Proc将作为函数参数出现。所以我想要这样的东西:not(Proc.new{|number|number.even?}#whichofcoursedoesn'twork:(我希望它做同样的事Proc.new{|number|number.odd?}我的想法是我想要一个类似这样的函数:defnegate(proc)negatedprocwithmeaningoppositeofthisofprocend非常感谢您!

ruby - 为什么将 1 加到递归 proc 调用会返回调用次数?

假设我有这段代码:defrcall(num)return0if10==num1+rcall(num-1)endprcall(90)#=>80此代码返回的值总是比传入num的值小10,即递归调用的次数。我看不出它是如何工作的。我有一个模糊的理解,如果满足退出条件,我们将返回零,以免再次增加计数器。但是,向proc调用添加1究竟是如何增加调用次数的呢?我看不到增量器在哪里累积。此外,这是一种特定于Ruby架构的技术,还是更普遍适用的技术?我没有在询问如何计算递归调用的问题的任何答案中看到它;似乎大多数时候人们都会传递一个计数器变量来跟踪计数。 最佳答案

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 - 'bundle exec jekyll serve' 和 'jekyll serve' 有什么区别?

目前正在学习Jekyll,一个建站框架,不知道bundleexecjekyllserve和jekyllserve有什么区别。两者的行为似乎相同。 最佳答案 两个字:bundleexecjekyllserve-运行在您的Gemfile/Gemfile.lock中指定的确切jekyll服务器版本。jekyllserve-运行一些版本的jekyll服务器,它可能是也可能不是你想要的。为获得最佳结果,请始终使用bundleexec。在我的机器上,我有一个shell别名,这样我就可以输入bejekyllserve

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(