gpt4 book ai didi

ruby - 请帮我处理这个 Ruby 代码

转载 作者:数据小太阳 更新时间:2023-10-29 08:25:23 25 4
gpt4 key购买 nike

我是 Ruby 的新手,我知道我没有使用其中提供的简单而强大的方法。我使我的代码可以工作,但它必须简单而不是这么大(尤其是我觉得我在循环变量方面非常糟糕)

i = 0
j = 0

loop_count = ((to_date-from_date)/(60*60*24)).to_i#diff b/w two dates in days

loop_count.times do
48.times do

event = Icalendar::Event.new

status = get_availability_on_date_and_hour(@templates, @availabilities, from_date+j.days, i).downcase

if(status != 'unavailable')
#Initialize start and end dates in DateTime's civil format
bias_date_time = DateTime.civil(from_date.year, from_date.month, from_date.day)

event.dtstart = bias_date_time + j.day + (i/2).to_i.hour + (i%2*30).to_i.minutes
event.dtend = event.dtstart + 30.minutes

event.summary = status.upcase
cal.add_event(event)
end

i += 1
end
i = 0
j += 1
end

最佳答案

没有什么特别针对 Ruby 的,但通常要使您的方法简短..

我会将循环内容提取到一个单独的方法中。方法名称用于描述正在发生的事情。

我还将计算提取到一个单独的方法中,以描述您正在尝试执行的操作,并将复杂的位(最有可能需要更改的部分)分开。

类似的东西:

0.upto(((to_date-from_date)/(60*60*24)).to_i) do |j|
0.upto(48) do |i|
status = get_availability_on_date_and_hour(@templates, @availabilities, from_date+j.days, i).downcase

add_event(from_date, to_date, i, j, status) if status != 'unavailable'
end
end


def add_event(from_date, to_date, i, j, status)
event = Icalendar::Event.new

event.dtstart = whatever_i_am_trying_to_calculate(from_date, i, j)
event.dtend = event.dtstart + 30.minutes
event.summary = status.upcase

cal.add_event(event)
end

def whatever_i_am_trying_to_calculate(from_date, i, j)
bias_date_time = DateTime.civil(from_date.year, from_date.month, from_date.day)
bias_date_time + j.day + (i/2).to_i.hour + (i%2*30).to_i.minutes
end

同时为变量 i 和 j 提供有用的名称。 i 和 j 意义不大。

关于ruby - 请帮我处理这个 Ruby 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2990601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com