假設三個已知屬性:
- 限制(邊緣的案例數)
- 總案例 ID 的陣列
- 分析重點(上、中、下)
能否更好地重構以下方法:
array_size = ids.size
if context == 'top'
ids = ids[0..params[:limit].to_i])
elsif context == 'bottom'
ids = ids.pop( ( array_size - params[:limit].to_i ) )
else
remove_top = ids.drop( ( params[:limit].to_i / 2).round )
remove_bottom = ids.pop( ( array_size - (params[:limit].to_i / 2).round ) )
ids = (ids - ( remove_top remove_bottom ) ))
end
uj5u.com熱心網友回復:
我的假設,基于你給我們的:
ids是陣列limit小于陣列的大小- 你的意思是
...而不是..在你的,top以便它回傳正確數量的元素(元素從 0 開始編號)
array_size = ids.size
limit_size = params[:limit].to_i
if context == 'top'
start_pos = 0
end_pos = limit_size
elsif context == 'bottom'
start_pos = array_size - limit_size
end_pos = array_size
else
start_pos = (limit_size.to_f/2).ceil
end_pos = array_size - limit_size/2 - 1
end
ids = ids[start_pos...end_pos]
uj5u.com熱心網友回復:
對于“限制”的含義,可能存在誤解。這里的目的是定義所需的集合。因此,middle需要調整背景關系的集合
array_size = ids.size
limit_size = params[:limit].to_i
mid_size = array_size - limit_size
if context == 'top'
start_pos = 0
end_pos = limit_size
elsif context == 'bottom'
start_pos = array_size - limit_size
end_pos = array_size
else
start_pos = (mid_size.to_f/2).floor
end_pos = array_size - (mid_size/2)
end
ids = ids[start_pos...end_pos]
當限制為奇數時,floororceil和-1for 索引位置的處理是相關的。選擇取決于是否要包含奇數物件以及要從比例尺的哪一端提取。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/407156.html
標籤:
