我有一个模型Rails应用程序Car和Wheel.我有返回不同对象数组的方法.例如
array = [Car.new, Car.new, Wheel.new, Wheel.new, 'home', 'market', 'fun']
Run Code Online (Sandbox Code Playgroud)
如何计算数组中的Car实例和Wheel实例?
我试过了array.include?(Car),array.count(Car)他们没有工作.
这个**符号在Ruby中意味着什么?
(1..5).map { |i| i**2 } # => [1, 4, 9, 16, 25]
Run Code Online (Sandbox Code Playgroud) filters = {
"start_year" => "2009",
"end_year" => "2011",
"theme" => "",
"discipline" => ""
}
Run Code Online (Sandbox Code Playgroud)
filters.length是的4,但我想得到2(那些不仅有钥匙,还有价值的人)
我有这个数组:
array = [["R.M", 20], ["R.U-CS", 3], ["R.M-TIC", 3], ["R.J.CONF", 20]]
Run Code Online (Sandbox Code Playgroud)
我想要sum数值,所以我使用以下方法将其转换为单个数组flatten:
array = array.flatten
#=> ["R.M", 20, "R.U-CS", 3, "R.M-TIC", 3, "R.J.CONF", 20]
Run Code Online (Sandbox Code Playgroud)
然后:
a = []
array.each do |r|
a << r if r.class == Fixnum
end
a
Run Code Online (Sandbox Code Playgroud)
这是有效的,但我正在寻找一个更简单的解决方案,可能首先将数组转换为"唯一numeric"数组:
[20, 3, 3, 20]
Run Code Online (Sandbox Code Playgroud) 我有一个数组数组:
arr_of_arrs = [
["cart", "disk", "halt", "walk"],
["prot", "waco", "beau", "drab"],
["meet", "lick", "look", "itch"],
["find", "asks", "noun", "keen"],
["jive", "moon", "seem", "beam"]
]
Run Code Online (Sandbox Code Playgroud)
我怎么能按照子阵列的指定索引处的元素的字母顺序排序这个数组数组,比如索引3,所以它的新顺序是:
[
["jive", "moon", "seem", "beam"],
["prot", "waco", "beau", "drab"],
["meet", "lick", "look", "itch"],
["find", "asks", "noun", "keen"],
["cart", "disk", "halt", "walk"]
] # ^^^^^^ index 3 is ordered
Run Code Online (Sandbox Code Playgroud) 如何使用Ruby检查数字是否是Dudeney数字?以这些结果为例:
dudeney_number?(1) #=> true
dudeney_number?(125) #=> false
dudeney_number?(512) #=> true
dudeney_number?(1728) #=> false
dudeney_number?(5832) #=> true
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用特定属性获取所有反馈.我正在使用此代码:
def index
feedbacks = Feedback.all
if params[:tag]
@average_customer_rating = feedbacks.where('buyer_feedback_date is not null').rated(Feedback::FROM_BUYERS).average(:buyer_rating) || 0
@products = Product.includes(:images).tagged_with(params[:tag]).order('DESC').limit(22)
else
@products = Product.includes(:images).all
@average_customer_rating = feedbacks.where('buyer_feedback_date is not null').rated(Feedback::FROM_BUYERS).average(:buyer_rating) || 0
end
end
Run Code Online (Sandbox Code Playgroud)
和Rails显示此错误:
undefined method `where' for []:Array
Run Code Online (Sandbox Code Playgroud)
为什么我不能where在这里使用,我该如何解决?
我以前有使用python的经验,并且对ruby非常陌生。阵列真的让我感到困惑。这是我的代码示例:
edges = [[[1, 2], [100, 200]], [[700, 400], [1000, 2000]]]
new_edges = Array.new(edges)
new_edges.map{|edge| edge.map{|point| point.insert(0, 808912)}}
edges
#=> [[[808912, 1, 2], [808912, 100, 200]], [[808912, 700, 400], [808912, 1000, 2000]]]
new_edges
#=> [[[808912, 1, 2], [808912, 100, 200]], [[808912, 700, 400], [808912, 1000, 2000]]]
Run Code Online (Sandbox Code Playgroud)
我相信会发生的是,in中的值edges不会更改,而in 会new_edges更改,但是,两者都会更改。我如何创建初始数组的副本并进行操作而不更改任何缩写?
我正在学习Ruby,当我在命令行界面中写这个时,我收到以下错误:
hold = {21, 22, {23, 24}, 25}
#=> SyntaxError: (irb):1: syntax error, unexpected ',', expecting =>
Run Code Online (Sandbox Code Playgroud)
这不应该是创造对
#=> {21 => 22, {23,24}=>25}
Run Code Online (Sandbox Code Playgroud) 我想从数组中选择连续的整数,例如:
输入:(不必排序)
array = [1, 3, 6, 7, 8, 9, 10, 12, 13, 17]
Run Code Online (Sandbox Code Playgroud)
预期产量:
#=> [6, 7, 8, 9, 10, 12, 13]
Run Code Online (Sandbox Code Playgroud)
到目前为止这是我的代码:
array = [1, 3, 9, 6, 7, 10, 8, 12, 13, 17]
newarray = []
z = 0
array.sort.each_cons(2) do |x, y|
if y == x + 1
if z == 0
newarray.insert(0, x, y)
else
newarray.push(y)
end
end
z = z + 1
end
newarray #=> [7, 8, 9, 10, 13]
Run Code Online (Sandbox Code Playgroud)
如你所见,6并且12 …
在某些代码中,我发现:
class Job
@@types = [:a, :b, :c, :d].reduce({}) do |acc, cmd|
acc[cmd] = cmd.to_s
acc
end
# ...
end
Run Code Online (Sandbox Code Playgroud)
reduce.那是什么意思?acc.那是什么意思?