草庐IT

array-initialization

全部标签

arrays - 在 Ruby 中将数组转换为索引哈希

我有一个数组,我想做一个散列,这样我就可以快速询问“数组中有X吗?”。在perl中,有一种简单(快速)的方法可以做到这一点:my@array=qw(123);my%hash;@hash{@array}=undef;这会生成一个哈希值,如下所示:{1=>undef,2=>undef,3=>undef,}我在Ruby中想到的最好的是:array=[1,2,3]hash=Hash[array.map{|x|[x,nil]}]给出:{1=>nil,2=>nil,3=>nil}是否有更好的Ruby方法?编辑1不,Array.include?这不是一个好主意。它慢。它在O(n)而不是O(1)中执行

ruby - ruby 中 Array#reject 的反义词是什么?

似乎它可能是keep_if。如果是这样,为什么不叫keep? 最佳答案 reject的反义词是select(返回一个新数组)reject!的反义词是select!(就地编辑数组)keep_if的反面是delete_if(就地编辑数组) 关于ruby-ruby中Array#reject的反义词是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12719668/

arrays - 如何向数组添加多个元素?

我可以轻松地向现有数组添加一个元素:arr=[1]arr[1,2]如何向我的数组添加多个元素?我想做类似arr的事情,但这会向我的数组添加一个数组#=>[1,[2,3]] 最佳答案 使用+=运算符:arr=[1]arr+=[2,3]arr#=>[1,2,3] 关于arrays-如何向数组添加多个元素?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/20686099/

ruby - 在 Ruby 中, 'new' 和 'initialize' 之间的关系是什么?初始化时如何返回nil?

我想要的是:obj=Foo.new(0)#=>nilorfalse这行不通:classFoodefinitialize(val)returnnilifval==0endend我知道在C/C++/Java/C#中,我们不能在构造函数中返回值。但我想知道在Ruby中是否可行。 最佳答案 InRuby,what'stherelationshipbetween'new'and'initialize'?new通常调用initialize。new的默认实现类似于:classClassdefnew(*args,&block)obj=allocat

Ruby - Array#<< 和 Array#push 之间的区别

通过检查Ruby1.9.3的文档,Array#和Array#push旨在实现将元素append到当前数组的末尾。但是,两者之间似乎存在细微差别。我遇到的是*运算符可用于将整个其他数组的内容append到当前数组,但仅限于#push。.a=[1,2,3]b=[4,5,6]a.push*b=>[1,2,3,4,5,6]正在尝试使用#相反会给出各种错误,具体取决于它是否与点运算符和/或圆括号一起使用。为什么#工作方式不同#push做?一个实际上不是另一个的别名吗? 最佳答案 它们非常相似,但不完全相同。接受单个参数,并将其压入数组的末尾。

ruby-on-rails - Array.join ("\n") 不是用换行符加入的方式吗?

我有一个数组..[1,2,3,4]我想要一个包含所有由换行符分隔的元素的字符串..1234但是当我尝试[1,2,3,4].join("\n")我得到1\n2\n3\n4我觉得有一个明显的答案,但我找不到! 最佳答案 是的,但是如果你打印出那个字符串,它里面会有换行符:irb(main):001:0>a=(1..4).to_a=>[1,2,3,4]irb(main):002:0>a.join("\n")=>"1\n2\n3\n4"irb(main):003:0>putsa.join("\n")1234所以它似乎确实实现了你想要的(?)

ruby - Array.empty 的相反方法是什么?或 [].empty?在 ruby

我知道我能做到unless[1].empty?但是我想知道有没有办法呢? 最佳答案 以及davidrac提到的#any?,以及ActiveSupport有#present?这更像是其他语言的真理测试。对于nil、false、''、{}、[]等在它上面返回false;其他一切都为真(有趣的是,包括0)。 关于ruby-Array.empty的相反方法是什么?或[].empty?在ruby,我们在StackOverflow上找到一个类似的问题: https://s

ruby - 烦人的 "warning: already initialized constant"消息的解决方案

今天我偶然发现了一个与Ruby常量有关的棘手问题。在我们的团队中,有人创建了一个模块,该模块包含在多个模型中。在我们的(规范)测试中,此结果输出到警告消息中,例如:/home/ayrton/project/lib/life_cycle.rb:5:warning:alreadyinitializedconstantRESET解决这个问题的一种方法是,像这样声明常量:moduleLifeCycleunless(const_defined?(:RESET))RESET='reset'end#...end我还阅读了AvdiGrimm撰写的博客文章,其中提供了替代方案solution,我想知道您

ruby - 如何在遍历数组时使用 Array#delete?

我有一个数组,我想遍历并删除一些元素。这不起作用:a=[1,2,3,4,5]a.eachdo|x|nextifx[1,2,4]我希望a为[1,2]。我该如何解决这个问题? 最佳答案 a.delete_if{|x|x>=3}参见方法文档here更新:您可以在block中处理x:a.delete_ifdo|element|ifelement>=3do_something_with(element)true#Makesuretheifstatementreturnstrue,soitgetsmarkedfordeletionendend

arrays - 传递 block 时 Array#sort 如何工作?

我在理解array.sort{|x,y|的方式时遇到问题block}工作正常,因此如何使用它?来自Rubydocumentation的示例:a=["d","a","e","c","b"]a.sort#=>["a","b","c","d","e"]a.sort{|x,y|yx}#=>["e","d","c","b","a"] 最佳答案 在你的例子中a.sort相当于a.sort{|x,y|xy}如您所知,要对数组进行排序,您需要能够比较其元素(如果您怀疑这一点,只需尝试在不使用任何比较的情况下实现任何排序算法,不是、>、或>=)。您提