什么是快速(或甚至最快?)的方式来查看一个Ruby散列中是否存在另一个不存在的密钥?我假设哈希是最有效的数据结构,但我可以开放任何东西,例如将东西放入集合中.
在我的lib文件夹中,我有billede.rb:
class Billede
require 'RMagick'
#some code that creates a watermark for a image
image.write(out)
end
Run Code Online (Sandbox Code Playgroud)
我如何致电/激活课程?是将它更改为Rake任务的唯一方法吗?
就像在标题中一样 - 例如我有一个方法DrawMe(what),我想允许在what参数等于其中一个值时运行此方法:{"house", "garden", "cat", "dog"}- 如果不是,则应停止此方法并应打印错误.有任何想法吗?
我需要将哈希的输出加入到字符串中.
哈希看起来像这样:
nas.location.walledgardens.to_s
=> "[#<Walledgarden id: 1, location_id: 12, url: \"polka.com\", created_at: \"2012-05-14 17:02:47\", updated_at: \"2012-05-14 17:02:47\">, #<Walledgarden id: 2, location_id: 12, url: \"test.com\", created_at: \"2012-05-14 17:02:47\", updated_at: \"2012-05-14 17:02:47\">, #<Walledgarden id: 3, location_id: 12, url: \"help.com\", created_at: \"2012-05-14 17:02:47\", updated_at: \"2012-05-14 17:02:47\">, #<Walledgarden id: 4, location_id: 12, url: \"yell.com\", created_at: \"2012-05-14 17:02:47\", updated_at: \"2012-05-14 17:02:47\">, #<Walledgarden id: 5, location_id: 12, url: \"sausage.com\", created_at: \"2012-05-14 17:02:47\", updated_at: \"2012-05-14 17:02:47\">]"
Run Code Online (Sandbox Code Playgroud)
我需要将url值加入以下格式:
polka.com,test.com,help.com
Run Code Online (Sandbox Code Playgroud)
最好的方法是什么?我可以轻松地浏览它,但输出有换行符,我需要删除这些以及逗号.
我发现自己一再想要计算数组中项目的出现次数,并显示顶部项目及其实际计数.我已经编写了如下代码,这么多次我认为它是一个反复出现的RSI诱导模式:
hits = Hash[ array.group_by{|o|o}.map{|o,a|[o,a.length]}.sort_by{|o,ct|[-ct,o]} ]
require 'pp'
pp hits
Run Code Online (Sandbox Code Playgroud)
我可以将它移动到Enumerable上的monkeypatch ...
module Enumerable
def counts(&blk)
blk ||= ->(o){o}
Hash[ group_by(&blk).map{|o,a| [o,a.length] }.sort_by{|o,ct| [-ct,o] } ]
end
end
a = %w[a b a b c d e g j a e c d k o k i l p a e c f d e a d e f s d v c ]
pp a.counts
#=> {"a"=>5,
#=> "d"=>5,
#=> "e"=>5,
#=> "c"=>4,
#=> "b"=>2,
#=> "f"=>2,
#=> "k"=>2, …Run Code Online (Sandbox Code Playgroud) 我注意到 Ruby 的理念是在运行时保持尽可能多的灵活性。
这是一个典型的(据我所知)Ruby 结构定义:
Person = Struct.new("Person", :name, :address)
Person.new("John", "Chicago, IL")
Run Code Online (Sandbox Code Playgroud)
我的问题是,当结构字段/成员列表也在运行时定义时,是否可以在运行时定义结构?看起来像这样的东西:
Person = Struct.new("Person", list_of_structure_fields)
Run Code Online (Sandbox Code Playgroud) 存储在数据库中的数据是这样的:
This is a line
This is another line
How about this line
Run Code Online (Sandbox Code Playgroud)
当我将其输出到视图时,我想将其转换为:
This is a line\n\nThis is another line\n\nHow about this line
Run Code Online (Sandbox Code Playgroud)
没有新行,并\n打印出实际字符。我怎样才能做到这一点?
我有一系列像这样的哈希.
[
{"package_details"=>{"name"=>"Package3", "price"=>3000.0, "id"=>"281"},"event_id"=>336},
{"package_details"=>{"name"=>"2000/-", "price"=>2000.0, "id"=>"280"}, "event_id"=>337},
{"package_details"=>{"name"=>"Package1", "price"=>1000.0, "id"=>"282"},"event_id"=>337},
{"package_details"=>{"name"=>"Package2", "price"=>2000.0, "id"=>"283"},"event_id"=>337}
]
Run Code Online (Sandbox Code Playgroud)
我希望这就像这样.
[
{"event_id"=>336, "package_details"=>[
{"name"=>"Package3", "price"=>3000.0, "id"=>"281"}
]},
{"event_id"=>337, "package_details"=>[
{"name"=>"2000/-", "price"=>2000.0, "id"=>"280"},
{"name"=>"Package1", "price"=>1000.0, "id"=>"282"},
{"name"=>"Package2", "price"=>2000.0, "id"=>"283"}
]},
]
Run Code Online (Sandbox Code Playgroud)
哈希应该根据相等的event_id值进行合并,并且事件可以包含许多包.
我想知道最简单的方法.虽然我可以做很多if和else s.
对于我的代码,我试图将2个参数调用到函数中.离开第二个输入框后,将两个数字相乘并将其放在第三个文本框中.如果前两个输入框中的任何一个为空,则将它们涂成浅红色.到目前为止这是我的代码,我错过了什么?
使用Javascript:
function multiply(one, two) {
if(one==""){
this.style.color='red';
}
if(two==""){
this.style.color='red';
}
else{
txt1=one * two;
return txt1;
}
}
Run Code Online (Sandbox Code Playgroud)
HTML5:
First Value: <input type="text" name="mFirst" />
Second Value: <input type="text" name="mLast" onblur="multiply(mFirst.value, mLast.value)" />
Multiplication of First and Second Value: <input type="text" name="answer">
Run Code Online (Sandbox Code Playgroud) 在一个简单的正则表达式中,我理解这一点
\w
Run Code Online (Sandbox Code Playgroud)
给出一个单词字符; 但是,我不知道如何添加加号(+):
\w+
Run Code Online (Sandbox Code Playgroud)
选择整个单词.在我看来,加号只意味着一个或多个单词字符,所以我不明白它将如何扩展到整个单词.