More Related Content Similar to GoとElixir、同時開発した時の気づき (20) More from Takahiro Kobaru (6) GoとElixir、同時開発した時の気づき2. •
• Fusic
• Go Elixir React PHP
• Twitter : @kobatako_
• Qiita : @kobatako
21. Go
func CalculateSleepTime(series map[string][]SleepTerm, results vital.SleeptimemeterResults) map[string][]SleepTerm {
var start time.Time
for _, value := range results.Data {
//
sleep, _ := time.Parse(datetimeFormat, value.SleepDatetime)
wakeup, _ := time.Parse(datetimeFormat, value.WakeupDatetime)
//
// 12
if isTimeAm(sleep) {
start = replaceTime(sleep.AddDate(0, 0, -1), 12, 0, 0)
// 12
} else {
start = replaceTime(sleep, 12, 0, 0)
}
//
startTime := sleep.Sub(start)
wakeupTime := wakeup.Sub(start)
series[start.Format(dateFormat)] =
append(series[start.Format(dateFormat)], SleepTerm{
Start: sleep,
Wakeup: wakeup,
StartTime: startTime,
WakeupTime: wakeupTime,
Duration: wakeup.Sub(sleep),
}
)
}
return series
}
22. Elixir
def calculate_sleep_time([data | tail], series) do
##
with {:ok, sleep} <- Timex.parse(data.sleep_datetime, @datetime_format),
{:ok, wakeup} <- Timex.parse(data.wakeup_datetime, @datetime_format) do
#
start =
if time_am?(sleep) do
# 12
Timex.shift(sleep, days: -1)
|> replace_time(12, 0, 0)
else
# 12
replace_time(12, 0, 0)
end
#
start_time = Timex.diff(sleep, start)
wakeup_time = Timex.diff(wakeup, start)
res_list = series ++ [{Timex.format!(start, @date_format), %{start: sleep, wakwup: wakeup,
start_time: start_time, wakeup_time: wakeup_time, duration: Timex.diff(wakeup,
sleep, :duration)}}]
calculate_sleep_time(tail, res_list)
end
end
23. // Go
sleep, _ := time.Parse(datetimeFormat, value.SleepDatetime)
wakeup, _ := time.Parse(datetimeFormat, value.WakeupDatetime)
# Elixir
with {:ok, sleep} <- Timex.parse(data.sleep_datetime, @datetime_format),
{:ok, wakeup} <- Timex.parse(data.wakeup_datetime, @datetime_format) do
#
end
•
• Elixir with
24. // Go
if isTimeAm(sleep) {
start = replaceTime(sleep.AddDate(0, 0, -1), 12, 0, 0)
} else {
start = replaceTime(sleep, 12, 0, 0)
}
# Elixir
start =
if time_am?(sleep) do
Timex.shift(sleep, days: -1) # Timex.shift
|> replace_time(12, 0, 0) # replace_time
else
replace_time(12, 0, 0)
end
• Elixir if
26. // Go
for _, value := range results.Data {
}
# Elixir
# data tail
def calculate_sleep_time([data | tail], series) do
with {:ok, sleep} <- Timex.parse(data.sleep_datetime, @datetime_format),
{:ok, wakeup} <- Timex.parse(data.wakeup_datetime, @datetime_format) do
calculate_sleep_time(tail, res_list)
end
end
•
27. // Go
return series
}
# Elixir
def calculate_sleep_time([], series) do
series
end
def calculate_sleep_time([data | tail], series) do
end
• return