我有4个字符串变量name, quest, favorite_color, speed可能是空的.我想将它们连接在一起,在非空的空格之间放置空格.代码的简单性,即查看和理解的简单程度,比速度更重要.
所以:
name = 'Tim'
quest = 'destroy'
favorite_color = 'red'
speed = 'fast'
Run Code Online (Sandbox Code Playgroud)
变
'Tim destroy red fast'
Run Code Online (Sandbox Code Playgroud)
和
name = 'Steve'
quest = ''
favorite_color = ''
speed = 'slow'
Run Code Online (Sandbox Code Playgroud)
变为:
'Steve slow'
Run Code Online (Sandbox Code Playgroud)
请注意,'Steve'和'slow'之间只有1个空格.
我该怎么做(最好是一行)?
在过去,我使用railsbrain.com提供了一个非常方便的离线api文档.
但他们停在版本2.3.2
有没有最新版本的其他解决方案.
我有一个采用代码块的方法.
def opportunity
@opportunities += 1
if yield
@performances +=1
end
end
Run Code Online (Sandbox Code Playgroud)
我称之为:
opportunity { @some_array.empty? }
但是我如何传递多个代码块以便我可以使用yield两次,如下所示:
def opportunity
if yield_1
@opportunities += 1
end
if yield_2
@performances +=1
end
end
Run Code Online (Sandbox Code Playgroud)
和:
opportunity {@some_other_array.empty?} { @some_array.empty? }
Run Code Online (Sandbox Code Playgroud)
我知道这个例子可以在没有收益的情况下完成,但这只是为了说明.
我有两个(或更多)数组,每个数组有12个整数(对应于每个月的值).我想要的就是将它们加在一起,这样我就可以得到一个单独的数组,每个月都有总和值.这是一个有三个值的例子:[1,2,3]和[4,5,6] => [5,7,9]
我能想到的最好的是:
[[1,2,3],[4,5,6]].transpose.map{|arr| arr.inject{|sum, element| sum+element}} #=> [5,7,9]
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?这似乎是一件非常基本的事情.
我已经看过好几次,但我无法弄清楚如何使用它们.镐说这些是特殊的快捷方式,但我无法找到语法描述.
我在这样的背景下见过他们:
[1,2,3].inject(:+)
Run Code Online (Sandbox Code Playgroud)
以计算总和为例.
在Ruby中,如何创建私有类常量?(即在课堂内可见但不在课堂外可见的)
class Person
SECRET='xxx' # How to make class private??
def show_secret
puts "Secret: #{SECRET}"
end
end
Person.new.show_secret
puts Person::SECRET # I'd like this to fail
Run Code Online (Sandbox Code Playgroud) 这是如何将字符串转换为Rails/Ruby中的类:
p = "Post"
Kernel.const_get(p)
eval(p)
p.constantize
Run Code Online (Sandbox Code Playgroud)
但是,如果我从数组/活动记录对象中检索方法,如下所示:
Post.description
Run Code Online (Sandbox Code Playgroud)
但它可能是
Post.anything
Run Code Online (Sandbox Code Playgroud)
什么都是字符串之类的anything = "description".
这很有用,因为我想重构一个非常大的类并减少代码和重复行.我怎样才能使它工作?
我正在尝试使用黄瓜+水豚来处理Ruby中的BDD Web开发,我仍然坚持应该是一个简单的任务 - 只是为了检查表中的行数.我想要实现的目的是:
page.should have_xpath("//table[@id='myTable']")
find("//table[@id='myTable']/tr").length.should == 3
Run Code Online (Sandbox Code Playgroud)
但这不起作用(缺少方法长度),我找不到一种方法来断言表长度.
任何想法任何人(请对我很轻松'我是一个红宝石nooby)
提前致谢
尼尔
我想在我的amazon_s3.yml配置文件中做类似的事情:
access_key_id: ENV['S3_KEY']
secret_access_key: ENV['S3_SECRET']
Run Code Online (Sandbox Code Playgroud)
......但我知道这不起作用.不确定它是否可行,但是你可以将Ruby代码放在YAML文件中吗?