草庐IT

new_hash

全部标签

ruby hash 添加键/值 if 修饰符

我正在使用包含用于在我的MailChimpAPI中创建新订阅者的键/值对的ruby​​hash。user_information={'fname'=>'helloworld','mmerge1'=>'ProductX'ifuser.product_name.present?}显然,我收到了syntaxerror,unexpectedmodifier_if的语法错误...我基本上只想根据条件为真添加mmerge1。 最佳答案 你不能在散列初始化block中那样使用if。您必须在初始化哈希后有条件地添加新的键/值:user_inform

ruby - 如何在不使用 new 的情况下在 Ruby 中创建对象

可以使用Ruby创建复数c=Complex.new(1,2)但是,它可以缩短为c=Complex(1,2)是否可以实现相同的功能而无需在类外部定义函数,如下例所示?classBitsdefinitialize(bits)@bits=bitsendenddefBits(list)#IwouldliketodefinethisfunctioninsidetheclassBits.newlistendb=Bits([0,1])我认为Ruby应该至少允许下面建议的构造函数之一classBitsdefinitialize(bits)@bits=bitsenddefself.Bits(list)#

ruby - Ruby 中的默认哈希值 (Rubykoans.com -> about_hashes.rb)

我正在浏览RubyKoans中的about_hashes.rb.1个练习让我感到困惑:deftest_default_valuehash1=Hash.newhash1[:one]=1assert_equal1,hash1[:one]#okassert_equalnil,hash1[:two]#okhash2=Hash.new("dos")hash2[:one]=1assert_equal1,hash2[:one]#okassert_equal"dos",hash2[:two]#hm?end我的猜测是Hash.new("dos")使“dos”成为所有不存在键的默认答案。我说的对吗?

ruby - 为什么 array.each 行为取决于 Array.new 语法?

我正在使用Ruby1.9.2-p290并发现:a=Array.new(2,[]).each{|i|i.push("a")}=>[["a","a"],["a","a"]]这不是我所期望的。但以下构造函数样式确实符合我的预期:b=Array.new(2){Array.new}.each{|i|i.push("b")}=>[["b"],["b"]]第一个例子是预期的行为吗?在ruby​​-doc中,我的size=2参数对于两个构造函数来说似乎是同一种参数。我认为,如果each方法通过了该参数,那么它将以相同的方式为两个构造函数使用它。 最佳答案

ruby-on-rails - 迪尔德 : Symbol not found: _rb_ary_new_from_values When trying to run foreman start

尝试运行“foremanstart”来执行我的rails文件时,我收到以下错误。dyld:Symbolnotfound:_rb_ary_new_from_valuesReferencedfrom:/Users/paulbattisson/.rvm/gems/ruby-2.1.1/gems/psych-2.0.5/lib/psych.bundleExpectedin:flatnamespace如果我运行railss那么应用程序可以正常启动,但是我想使用以下Procfile:web:bundleexecrackupconfig.ru-p$PORTresque:envTERM_CHILD=1

ruby-on-rails - Ruby 风格问题 : storing hash constant with different possible values

这更像是一个风格问题,我想知道其他人是怎么做的。假设我的数据库中有一个名为“status”的字段用于博客文章。我希望它有几个可能的值,例如“草稿”、“等待审核”和“已发布”。显然我们不想每次都在这些魔法值中“硬编码”,那样不会很干。所以我有时做的是这样的:classPostSTATUS={:draft=>"draft",:awaiting_review=>"awaitingreview",:posted=>"posted"}...end然后我以后可以编写引用它的代码,如STATUS[:draft]或Post::STATUS[:draft]等这工作正常,但有一些我不喜欢的地方。如果您输入

ruby - 为什么我们定义 `#initialize` 而不是 `::new`

在Ruby中,创建一个新类时,我们会这样定义构造方法:classThingdefinitializedo_stuffendend但是,当实际创建对象的实例时,我们发现自己不是在实例上调用initialize,而是在类上调用new。既然如此,我们为什么不定义::new?classThingdefself.newdo_stuffendend::new在initalize没有定义的场景后面有什么东西吗?这两者完全不同吗?定义::new会起作用吗?或者只是definitialize比defself.new更短(不是)?我认为这种差异一定有充分的理由。 最佳答案

ruby-on-rails - 如何修复 `new' :String 的未定义方法 "Rack::Cors"

我是RubyonRails的新手,正在学习如何使用Angular,但是在我运行“geminstallrack-cors”之后,当我尝试启动Rails应用程序时,我保持收到此错误:C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/actionpack-5.1.1/lib/action_dispatch/middleware/stack.rb:35:in`build':undefinedmethod`new'for"Rack::Cors":String(NoMethodError)Didyoumean?nextfromC:/Ruby23-x64/lib/ruby

ruby-on-rails - Resque 和 New 遗物

我开始在使用NewRelic和resque时遇到奇怪的错误INFO:StartingAgentshutdownERROR:undefinedmethod`write'fornil:NilClass:Unabletosenddatatoparentprocess,pleaseseehttps://newrelic.com/docs/ruby/resque-instrumentationformoreinformation我已按照说明进行操作here我也不再在我的新遗物控制面板中看到任何东西 最佳答案 directions最近已更新。我

ruby - 我可以做 hash.has_key 吗? ('video' 或 'video2' ) ( ruby )

或者我可以做得更好hash.has_key?('videox')wherexis''什么都没有或一个数字?所以'video'、'video1'、'video2'会通过条件吗?当然我可以有两个条件,但万一我将来需要使用video3,事情会变得更复杂...... 最佳答案 如果您想要video的一般情况后跟一个数字而不明确列出所有组合,可以使用Enumerable中的几种方法。您可以将其与正则表达式结合使用。hash.keys是来自hash的键数组,^video\d$匹配视频后跟一个数字。#trueiftheblockreturnstr