草庐IT

each_pair

全部标签

ruby - 为什么 Array#each_with_object(0) 不起作用?

为什么在each_with_object中使用0作为参数没有返回正确的值:[1,2,3].each_with_object(0){|i,o|o+=i}#=>0但是使用空数组和reduce(:+)可以吗?[1,2,3].each_with_object([]){|i,o|o6 最佳答案 来自documentation它说:each_with_object(obj)→an_enumeratorIteratesthegivenblockforeachelementwithanarbitraryobjectgiven,andreturnst

ruby - 枚举器 each_slice 中的 'p' 是什么意思?

出于好奇,'p'在Ruby中的enumerable.each_slice中代表什么?例如:(1..3).each_slice(2){|n|pn}打印:[1,2][3]和(1..3).each_slice(2){|n|printn}打印:123同时:(1..3).each_slice(2){|n|putsn}打印:123 最佳答案 没有魔法或奇怪的行为,p实际上是指Kernel.peach_slice正在迭代2个元素的切片。所以:迭代1->n=[1,2]迭代2->n=[3]Kernel#p在每次迭代中写入n.inspect,因此它写入

ruby - 为什么 each_slice with block 和 .map 返回 nil

为什么返回nil,第2行是什么意思?该数组代表我正在尝试为其创建解决方案的数独谜题的行。我正在irb中尝试不同的方法,看看有多少种不同的方式可以查看数组。array=['015003002000100906270068430490002017501040380003905000900081040860070025037204600']array.each_slice(9){|e|putse.map}#=>nil 最佳答案 有些方法需要一个block,如果没有提供block,它们将返回Enumerable。在您的示例中,您在未提供任何

ruby - 嵌套 if else inside .each 迭代

我想知道这是否有意义,或者语法是否错误,基本上这是否可以接受。我想在我的数组迭代中嵌套一个if/else条件。defchange_numbers(first_array,second_array)second_array.eachdo|index|iffirst_array[index]==0first_array[index]=1elsefirst_array[index]=0endendend该数组是一个简单的(二进制)数组,仅包含0和1,我想使用第二个数组的元素作为我要更改的第一个数组的索引。例子:first_array=[0,0,0,0,1,1,1,1,1]second_arr

ruby - 在迭代器上调用 block 方法 : each. magic.collect { ... }

我有一个带有自定义each-method的类:classCurseArray并且想要调用不同的block方法,如对那些迭代元素的“收集”或“注入(inject)”。例如:curse_array.each_safe.magic.collect{|element|"#{element}isanicesentence."}我知道有一个特定的函数(我在这里称之为“魔法”)可以做到这一点,但我忘记了。请帮忙!:-) 最佳答案 如果一个方法产生了,你需要给它传递一个block。无法定义自动通过自身的block。我能得到的最接近您的规范的是:de

ruby - 为什么 map {}.compact 比 each_with_object([]) 更快?

我做了一些基准测试:require'benchmark'words=File.open('/usr/share/dict/words','r')do|file|file.each_line.take(1_000_000).map(&:chomp)endBenchmark.bmbm(20)do|x|GC.startx.report(:map)dowords.mapdo|word|word.sizeifword.size>5end.compactendGC.startx.report(:each_with_object)dowords.each_with_object([])do|word

ruby-on-rails - ruby rails 3 : How to access an attribute of each record in a has_many query

我不确定如何在标题中表达它,但我正在尝试执行以下操作。我有2个具有以下关系的模型:classCampaign现在,Point模型有一个“locale”属性,我希望能够将特定事件的每个点的所有“locale”放入一个数组、集合或其他任何东西中,而无需执行类似locales=Array.newcampaign.points.eachdo|p|locales我在想一些与campaign.points.locales类似的东西。是否有一些很好的Rails方法来执行此查询,或者我只需要遍历集合?感谢您的帮助。编辑:还因为这种关系实际上是一种“has_manythrough”关系,所以这种方法不起

ruby-on-rails - rest_in_place 在 .each for 循环中选择

我正在使用rest_in_placeRails3中的gem在返回模型结果的表中执行就地编辑。对于编辑文本输入,我没有遇到任何问题。对于我的一个fields我希望该字段在单击进行编辑时有一个选择下拉框,该下拉框由系统内具有用户的用户模型填充。我试图在我的模型中使用以下代码,但似乎rest_in_place期望此元素位于表单内。HTML:">Javascript:RestInPlaceEditor.prototype.bindForm=function(){this.activateForm=RestInPlaceEditor.forms[this.formType].activateFo

ruby-on-rails - 未定义的方法 `each' 为 "#<Complaigns::ActiveRecord_Relation:0x00000003cfb4c8>":String

我有一个名为Complaign的模型,它具有一些其他属性以及投诉日期(c_date)。在ComplaignController中,我有一个indexView,它显示所有的complaigns。有一个从日期到日期的过滤器。过滤后,它工作正常,并正确显示在这些日期触发的投诉。现在我希望将此查询的结果传递给不同的方法,比如导出方法。我想从索引View中传递它,因为它存储在@complaigns中。这是我的索引方法:defindexifparams[:from]&¶ms[:to]from=params[:from].to_dateto=params[:to].to_date@compl

ruby-on-rails - Rails 控制台错误 : undefined method `each' for nil:NilClass (NoMethodError)

在我的Rails应用程序的根目录中运行railsconsole的任何尝试都会产生以下错误:undefinedmethod`each'fornil:NilClass(NoMethodError)完整的堆栈跟踪:/Users/gnerkus/.rvm/gems/ruby-2.2.3@rails-experiments/gems/railties-5.0.0.beta1.1/lib/rails/railtie.rb:245:in`each_registered_block':undefinedmethod`each'fornil:NilClass(NoMethodError)from/Use