Как решить этот лабораторный урок 2.2 в разработке приложений Apple с Swift iBook?
Я новичок, пытающийся быстро освоить iBook от Apple "Разработка приложений с помощью Swift", и, похоже, не смог завершить заключительную работу в уроке 2.2 "Функции". Кто-нибудь может направить меня с правильным путем для завершения лаборатории? Вот что просит лаборатория: Теперь напишите функцию с именем pacing, которая принимает четыре аргумента типа Doubles, которые называются currentDistance, totalDistance, currentTime и goalTime. Функция также должна возвращать строку, которая будет сообщением для отображения пользователю. Функция должна вызывать CalculayPace, передавая соответствующие значения, и захватывать возвращаемое значение. Затем функция должна сравнить возвращаемое значение с goalTime, а если пользователь находится в темпе, вернуть "Keep it up!" И вернуть "Вам нужно нажать немного сильнее!" иначе. Вызовите функцию и напечатайте возвращаемое значение.
Вот моя функция CalculayPace от ранее в другой части лаборатории:
func calculatePace(currentDistance: Double, totalDistance: Double, currentTime: Double) -> Double {
let currentSpeed = currentDistance / currentTime
return ((totalDistance / currentSpeed) / 60)
}
print("\(calculatePace(currentDistance: 1, totalDistance: 10, currentTime: 6)) hours till you finish the run!")
Вот функция, которую я пытаюсь выполнить для решения лаборатории, но у меня возникли проблемы с ней:
func pacing(currentDistance: Double, totalDistance: Double, currentTime: Double, goalTime: Double) -> String {
//I don't know what to put in return
return ("test return")
calculatePace(currentDistance: 1, totalDistance: 10, currentTime: 6, goalTime: 60)
}
pacing(currentDistance: 1, totalDistance: 10, currentTime: 6, goalTime: 60)
Я не понимаю, как я должен получить возвращаемое значение, и последние несколько предложений лаборатории смущают меня. "И если пользователь находится в темпе, верните" продолжайте в том же духе! "И верните" Вы должны нажать на него чуть сильнее! ", Иначе. Вызовите функцию и напечатайте возвращаемое значение". Разве это не два разных отпечатка, так как мне вернуть оба и что означает в противном случае?
3 ответа
Я думаю, что это то, что вы хотите, пожалуйста, проверьте..
func calculatePace(currentDistance: Double, totalDistance: Double, currentTime: Double) -> Double {
let currentSpeed = currentDistance / currentTime
return (totalDistance / currentSpeed)
}
print("\(calculatePace(currentDistance: 1, totalDistance: 10, currentTime: 6)) hours till you finish the run!")
func pacing(currentDistance: Double, totalDistance: Double, currentTime: Double, goalTime: Double) -> String {
let yourFinishTime = calculatePace(currentDistance: currentDistance, totalDistance: currentDistance, currentTime: currentTime)
var message = ""
if yourFinishTime > goalTime {
message = "You've got to push it a bit harder!"
}else {
message = "Keep it up"
}
return message
}
pacing(currentDistance: 1, totalDistance: 10, currentTime: 6, goalTime: 60)
Объяснение: Прежде всего я использовал currentDistance и currentTime, чтобы найти текущую скорость, затем я нахожу время, или вы можете сказать примерное время, которое потребуется для завершения общего расстояния, если я продолжу идти на текущей скорости, я вернул это время из Затем, если вычислить функцию PacePace, я сравнил это время с целевым временем. Если я потрачу больше времени на прохождение общего расстояния, то мне придется нажимать сильнее, иначе просто не отставать. Надеюсь, поможет.
Вот мой подход, использующий больше шагов, и в то же время менее лаконичный логический путь для таких новичков, как я: используйте первую функцию, чтобы напечатать приблизительное окончание (требование 1-го назначения) и верните оставшееся время (требование 2-го назначения), затем вторую функцию, чтобы сообщить бегуну (также требование 2-го назначения):
func calculatePace(currentDistance:Double, totalDistance:Double, currentTime:Double) -> Double{
let speed = currentDistance / currentTime
let remainingDistance = totalDistance - currentDistance
let remainingTime = remainingDistance / speed
print("Estimated finish time: \(currentTime + remainingTime)")
return remainingTime
}
func pacing(currentDistance:Double, totalDistance:Double, currentTime:Double, goalTime:Double){
if (currentTime + calculatePace(currentDistance: currentDistance, totalDistance: totalDistance, currentTime: currentTime)) <= goalTime {
print("Keep it up!")
} else {
print("You've got to push it just a bit harder!")
}
}
pacing(currentDistance: 60, totalDistance: 240, currentTime: 15, goalTime: 60)
Вот как я это сделал.
func pacing(currentDistance: Double, totalDistance: Double, currentTime: Double, goalTime: Double) -> String {
if calculatePace(currentDistance: 17.9, totalDistance: 36, currentTime: 28.37) < goalTime {
return "You've got to push it just a bit harder!"
} else {
return "Keep it up!"
}
}
print (pacing (currentDistance: 17,9, totalDistance: 36, currentTime: 28,37, goalTime: 45))