草庐IT

数组去重和排序

全部标签

ruby-on-rails - 序列化时无法将空数组保存到数据库

在RubyonRails中,如果数组为空,则具有序列化数组字段的模型将不会在.save()上更新,而它之前有数据。我正在使用:ruby2.2.1rails4.2.1sqlite31.3.10我创建了一个字段设置为文本的新模型:railsgmodel用户名:stringexample:text在我添加的User.rb文件中:serialize:example,Array我实例化了User类的一个新实例:test=User.new然后我保存用户以确保它正确保存:test.save()(0.1ms)begintransactionSQL(0.4ms)INSERTINTO"users"("cr

ruby-on-rails - 是否有类似 'with_indifferent_access' 的数组可用于包含?

我尝试在我的应用中只使用:symbols作为关键词。我尝试在:symbol=>logic或string=>UI/languagespecific之间做出严格的决定但我也得到了每个JSON的一些“值”(即选项等),因为JSON中没有:symbols,所以我调用的所有哈希都具有“with_indifferent_access”属性。但是:数组是否有相同的东西?像那样a=['std','elliptic',:cubic].with_indifferent_accessa.include?:std=>true?编辑:将rails添加到标签 最佳答案

arrays - 数组元素赋值的奇怪行为

今天我遇到了数组元素赋值的一些奇怪行为:arr=["a","b"]arr2=[1,2]arr.unshift(arr2)#=[[1,2],"a","b"]arr.push(arr2)#=>["a","b",[1,2]]但是,这是有道理的:arr[0,0]=arr2#=>[1,2,"a","b"]我知道在[0,0]中,第一个零是index,第二个是该数组中从index开始的元素数。在我看来它应该与unshift相同,但事实并非如此。谁能解释一下这种行为? 最佳答案 如果我们diveintotherubysourcecode,我们会找到

ruby - 错误的参数类型字符串(应为数组)

我正在尝试使用Octopress(Jekyll之上的博客引擎)在我的新Macbook上,当我运行bundleexecjekyll--server时出现此错误:(缩短路径)/path/to/markdown.rb:118:in`to_html':wrongargumenttypeString(expectedArray)(TypeError)from/path/to/markdown.rb:118:in`convert'...(完整路径)/usr/local/rvm/gems/ruby-1.9.2-p290/gems/jekyll-0.11.0/lib/jekyll/converters

ruby - 交集完成后,顺序是否保留在数组中?

当我对两个数组进行交集时,是否可以保证生成的顺序基于第一个数组的顺序?例如,如果我有a=[1,2,3]b=[3,2,1]可以a&b返回[3,2,1],而不是[1,2,3](这是什么我希望)?我在RDoc或Pickaxe的Array文档中找不到任何直接解决这个问题的内容。RubySpec有一个规范,它createsanarraywithelementsinordertheyarefirstencountered,但我是否应该假设YARVRuby会遵守该规范? 最佳答案 看起来这是一项有保证的功能。他们在revision39415中升级

ruby - 在数组中找到 block 返回 true 的第一个元素并返回 block 的返回值

我需要遍历数组并将提供的block应用于每个元素,并返回block返回的第一个真值,这意味着我需要在获得真值后立即停止。下面是我的代码。我是ruby新手,我不确定这段代码是否是在重新发明轮子。也许已经有一个或多个库方法可以做到这一点?还是可以简化此代码?RS={:x=>%w(\d+a\d+bb\d+ccc\d+).map{|x|/^#{x}$/},:y=>%w(\w+1\w+22\w+333\w+).map{|x|/^#{x}$/}}.freezedeffinds,tr=RS[s]ifrr.eachdo|p|m=p.matchtreturnmifmendnilendendpfind:x

ruby - 如何进行稳定排序?

如何稳定地对数组进行排序?我要排序的值可能有很多重复项,我不确定ruby​​使用哪种排序算法。我认为插入排序最适合我。示例:a=[[:a,0],[:b,1],[:c,0],[:d,0]]a.sort_by{|x,y|y}#=>[[:a,0],[:d,0],[:c,0],[:b,1]]寻找[[:a,0],[:c,0],[:d,0],[:b,1]] 最佳答案 把你原本想排序的键和索引放到一个数组中,然后排序。a.sort_by.with_index{|(x,y),i|[y,i]}#=>[[:a,0],[:c,0],[:d,0],[:b,

ruby-on-rails - 如何在 RubyOnRails 中使用 'acts as nested set' 创建一个可排序的接口(interface)

我一直在为使用acts_as_list的模型实现一些不错的交互界面,这些界面可以对我的mRails应用程序中的列表进行排序。我有一个排序函数,在每次拖放之后使用sortable_elementscript.aculo.us函数调用并设置每条记录的位置。这是在拖放完成后处理排序的Controller操作示例:defsortparams[:documents].each_with_indexdo|id,index|Document.update_all(['position=?',index+1],['id=?',id])endend现在我正在尝试对嵌套集模型(acts_as_nested

ruby - 当 (key => value) 存储在数组中时的哈希赋值? ( ruby )

我有散列的散列(@post),我想在其中保持散列键在数组(@post_csv_order)中的顺序,还想保持关系键=>数组中的值。我不知道数组中@post哈希和key=>value元素的最终数量。我不知道如何在循环中为数组中的所有元素分配散列。一个接一个@post_csv_order[0][0]=>@post_csv_order[0][1]效果很好。#require'rubygems'require'pp'@post={}forum_id=123#onlysamplevalues....tomakethissamplescriptworkpost_title="Testpost"@po

ruby - Ruby 的排序方法如何与组合比较(宇宙飞船)运算符一起工作?

这里是初级程序员,只是想了解Ruby背后的过程sort使用飞船操作符时的方法.希望有人能帮忙。在以下内容中:array=[1,2,3]array.sort{|a,b|ab}...我明白sort一次比较一对数字,然后返回-1如果a属于b之前,0如果它们相等,或者1如果a应该遵循b.但是在降序排序的情况下,像这样:array.sort{|a,b|ba}...到底发生了什么?是否sort还是比较ab然后翻转结果?或者它是在解释return的-1,0和1具有相反的行为?换句话说,为什么要像这样将变量放在block中:array.sort{|b,a|ba}...结果与第一个示例中的排序模式相同?