草庐IT

l_velocity_Array

全部标签

arrays - 运算符 Array#<< 以 reduce 的简写形式失败

基于Symbol#to_proc,有一种众所周知的简写形式可以将block传递给任何方法。实现。代替:[1,2,3].reduce(0){|memo,e|memo+e}#or[1,2,3].reduce{|memo,e|memo.+(e)}有人可能会写:[1,2,3].reduce&:+以上是后者“标准符号”的精确“同义词”。现在让我们有两个数组:a=[[1,"a"],[2,"b"]]b=[[3,"c"],[4,"d"]]虽然两者b.reduce(a){|memo,e|memo将正确更新a数组,就像a.concat(b)会做的那样:#⇒[[1,"a"],[2,"b"],[3,"c"],

ruby - array[4,0] 返回 [],但 array[5,0] 返回 nil... 为什么?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:ArrayslicinginRuby:lookingforexplanationforillogicalbehaviour(takenfromRubykoans.com)我正在学习RubyKoans,我已经学习了处理数组的部分,如下所示:array=[:peanut,:butter,:and,:jelly]其中一个测试侧重于array[4,0]返回的内容,另一个侧重于array[5,0]返回的内容。这个数组中只有4个元素,这意味着它上升到数组[3],对吗?那么为什么array[4,0]返回一个空数组而arra

ruby - Array#uniq 与 Ruby 1.8.7 中的 block 等效

Array#uniq在Ruby1.9中有这种行为c=["a:def","a:xyz","b:abc","b:xyz","c:jkl"]c.uniq{|s|s[/^\w+/]}#=>["a:def","b:abc","c:jkl"]它可以占用一个区block并根据我们提供的内容提供独特的值(value)。但是,这在Ruby1.8中不起作用。如何在ruby​​1.8中创建此功能? 最佳答案 安装Marc-AndréLaFortune's向后移植gem:https://github.com/marcandre/backports它具有1.

ruby - Array#first 的 block 参数有什么作用?

我的内存力最差,我忘记了Array#find。所以我写了一些代码,使用Array#first来获取第一个符合条件的项目:first_even_num=[1,2,3].first{|x|x%2==0}这行不通,无论条件如何,它都只返回数组的第一个元素。该block根本没有被调用:[1,2,3].first{|x|exit}puts"theprogramdidnotexit"我已经接受了Array#first没有按照想象的那样做,但我很好奇为什么上述示例不会引发错误。查看2.3.1source,唯一记录的参数是一个整数,表示返回结果的数量。我不太了解C,但这是底层Array#first方法

ruby - 以这种方式使用 Array#reduce 如何工作?

过去几周我一直在学习ruby​​,我遇到了类似这样的事情:array=[10,20,20];array.reduce(:^)#=>10评估为10。该代码的目的是在序列中找到出现次数为奇数的元素,例如[10,20,20]。有没有人对它的工作原理有一个相对简单的解释? 最佳答案 array=[10,20,20];array.reduce(:^)#=>10产生与相同的结果array.reduce{|t,n|t^n}#=>10让我们添加一个puts语句看看发生了什么。array.reducedo|t,n|puts"t=#{t},n=#{n}

ruby-on-rails - 为什么 Ruby Array 类有 to_a 和 to_ary 方法?

是否有我们在已经是数组的对象上调用Array.to_a和Array.to_ary的用例?如果不是,为什么这些方法存在于Array类中? 最佳答案 Arethereanyusecasesinwhichwe'dcallthesecoercionmethods(Array.to_aandArray.to_ary)onanobjectthat'salreadyArray?是的:在Ruby中,您通常从不关心对象是哪个类的实例。只有它能做什么。所以,你只关心“这个对象能不能把自己转成数组”。显然,数组可以将自身转换为数组,因此它应该具有这些方法

ruby - Watir Webdriver : Iterating table and storing its content in an array

我正在尝试自动化显示在网站上的block并通过CMS表比较其内容。问题是我已经设法使出现在UI上的block自动化,但是当我以管理员身份登录并尝试使用迭代将表的内容保存在一个数组中时,我无法做到这一点。NewText12012-06-0610:241Text22012-06-0610:292ThisisText32012-06-0512:553我使用的代码是@text=Array.newx=1y=0untilx==10y=x-1untily==x@text[y]=@browser.table(:id,'nodequeue-dragdrop').tbody.row{x}.cell{1}.

ruby - 如何使用 array#each 将数组的元素相乘?

我正在尝试编写一个方法,它将一个整数数组作为输入并返回它们的乘积。例如:product([1,2,3])#returns6我需要使用Array#each而不是注入(inject)方法来执行此操作。这是我想出的,但似乎不正确:defproduct(array)final=0.0array.eachdo|i|final*=iendreturnfinalend此外,我如何修改此方法以返回数组中所有奇数的乘积,这样product([1,2,3])#returns3,because2isevenproduct([0,-1,-10])#returns-1,because0and-10areeven

ruby - 为什么在 Array 已经是 Enumerable 时使用 Array#to_enum?

据我了解,Array类已经混合在Enumerable模块中。如果是这样,为什么没有[:example].next?为什么我需要让它成为[:example].to_enum.next? 最佳答案 to_enum与Enumerable无关,它返回一个Enumerator。Array没有next方法,因为next是Enumerator方法,而不是Enumerable方法。 关于ruby-为什么在Array已经是Enumerable时使用Array#to_enum?,我们在StackOverfl

Ruby Hash/Array delete_if 没有 block

根据RubyHash/Array文档,如果没有给出block,delete_if方法返回一个枚举器。这有什么用?有人可以举例说明这种模式吗? 最佳答案 在Enumerator上定义了一些方法,为迭代器提供了灵active。我经常使用的一种方法是with_index。p%w[abcdef].delete_if.with_index{|_,i|i.even?}#=>["b","d","f"]如果不使用Enumerator类来完成,则必须定义各种方法,包括delete_if_with_index,这不是一件好事。