草庐IT

迭代循环

全部标签

ruby - 如何获取注入(inject)循环的每个值

我想获取inject的每个值。例如[1,2,3].inject(3){|sum,num|sum+num}返回9,我想获取循环的所有值。我尝试了[1,2,3].inject(3).map{|sum,num|sum+num},但没有成功。我写的代码是这样的,但是我觉得是多余的。a=[1,2,3]result=[]a.inject(3)do|sum,num|v=sum+numresult[4,6,9]有没有办法同时使用inject和map? 最佳答案 使用专用的Eumerator非常适合这里,但我会为此展示更通用的方法:[1,2,3].i

ruby - 如何替换 Ruby 中的 for 循环?

在Ruby中,使用for循环是一种糟糕的风格。这是普遍理解的。向我推荐的风格指南:(https://github.com/bbatsov/ruby-style-guide#source-code-layout)说:“永远不要使用for,除非你知道确切的原因。大多数时候应该使用迭代器。for是根据each实现的(因此你添加了一个间接级别),但有一个扭曲-for不会引入新的作用域(与each不同),并且在其block中定义的变量将在其外部可见。”给出的例子是:arr=[1,2,3]#badforeleminarrdoputselemend#goodarr.each{|elem|putsel

ruby - 在 Ruby 中迭代几天

我试过以下方法:defnext_seven_daystoday=Date.today(today..today+7).each{|date|putsdate}end但这只是给了我第一个和最后一个日期。我不知道如何获得介于两者之间的所有这些。我试着按照这里的例子:http://www.whynotwiki.com/Ruby_/_Dates_and_times 最佳答案 我想你想要更像这样的东西:defnext_seven_daystoday=Date.today(today..today+7).inject{|init,date|"#

ruby - 如何在 pry 中退出循环

如果你继续输入'n',你将循环100次,我怎么能离开每个循环并继续从第7行开始调试而不退出循环然后自动运行剩余的代码,exit!!!的行为不适合我,因为我想在退出循环后继续调试代码。1:require'pry'2:=>3:binding.pry4:(1..100).eachdo|x|5:printx6:end7:8:print"hi" 最佳答案 你可以使用disable-pry命令 关于ruby-如何在pry中退出循环,我们在StackOverflow上找到一个类似的问题:

ruby - 如何使用大括号在 Ruby 中执行单行 while 循环

我正在尝试使用花括号在ruby​​中做一个简单的单行while循环。我在以下格式中取得了成功:whilex这作为一个衬垫就足够了,但我不喜欢在一个衬垫中使用doend。我想做类似的事情:whilex这可以做到吗? 最佳答案 这个怎么样:x=0x+=1whilex5 关于ruby-如何使用大括号在Ruby中执行单行while循环,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/357

Ruby:带索引的循环?

有时,我使用Ruby的Enumerable#each_with_index而不是Array#each当我想跟踪索引时。有没有像Kernel#loop_with_index这样的方法我可以用来代替Kernel#loop? 最佳答案 没有block的循环会产生一个枚举器,它有一个with_index方法(如果你愿意的话,还有一个each_with_index。)loop.with_index{|_,i|putsi;breakifi>100} 关于Ruby:带索引的循环?,我们在StackOv

ruby - 在 ruby​​ for 循环中迭代每两个元素

如何创建一个for循环,例如for(intx=0;xruby?我想遍历一个数组,但我的计数器增加了2而不是1。 最佳答案 如果您真正想要的是一次消耗数组中的2个项目,请查看each_slice.[1,2,3,4,5,6,7,8,9].each_slice(2)do|a,b|puts"#{a},#{b}"end#result1,23,45,67,89, 关于ruby-在ruby​​for循环中迭代每两个元素,我们在StackOverflow上找到一个类似的问题:

ruby - 从ruby中的文件内容循环

好的,我是Ruby的新手,而且我在bash/ksh/sh方面有很强的背景。我想做的是使用一个简单的for循环在多个服务器上运行一个命令。在bash中我会这样做:forSERVERin`catetc/SERVER_LIST`dossh-q${SERVER}"ls-l/etc"doneetc/SERVER_LIST只是一个看起来像这样的文件:server1server2server3etc我似乎无法在Ruby中做到这一点。这是我目前所拥有的:#!/usr/bin/ruby###SSHtesting##require'net/ssh'File.open("etc/SERVER_LIST")d

ruby - 迭代 Ruby 中的无限序列

我正在尝试解决ProjectEuler问题#12:Thesequenceoftrianglenumbersisgeneratedbyaddingthenaturalnumbers.Sothe7thtrianglenumberwouldbe1+2+3+4+5+6+7=28.Thefirsttentermswouldbe:1,3,6,10,15,21,28,36,45,55,...Letuslistthefactorsofthefirstseventrianglenumbers:1:13:1,36:1,2,3,610:1,2,5,1015:1,3,5,1521:1,3,7,2128:1,2

ruby - 珠宝商向我的 gem 添加循环依赖

Rakefile中的Gem(gemfoo)珠宝商声明如下所示:Jeweler::Tasks.newdo|gem|#truncatedgem.add_runtime_dependency'nokogiri','~>1.4.1'gem.add_development_dependency'jeweler'end问题在于它在gemfoo.gemspec文件中生成了以下依赖项:s.add_runtime_dependency(%q,[">=0"])s.add_runtime_dependency(%q,["~>1.4.1"])s.add_development_dependency(%q,["