gpt4 book ai didi

swift - 从函数内的各个循环返回一个值

转载 作者:行者123 更新时间:2023-11-30 10:37:27 25 4
gpt4 key购买 nike

我试图从包含大量循环的函数返回领域对象。该函数的要点是使用 switch 语句创建一个随机加权生成器,以在下限和上限累积概率的各个“桶”之间进行解析,直到随机生成的双数落在这些桶之一中,从而返回学生对象。

我最初只是在选择正确的学生时更改标签,但我需要在函数之外编辑学生的其他参数,因此我不能再从函数返回名称,而是需要返回对象。旧代码附在下面。我所做的唯一更改是将返回的参数添加到函数名称: func randomWeightedStudent() -> Student { ... } 而不是 StudentNameLabel.text = currentStudent.name 我想返回 currentStudent

func randomWeightedStudent() {

let randomValue = Double.random(in: 0.00 ... 1.00)

if let numberOfStudents = students?.count {

for i in 0 ... (numberOfStudents - 1) {

guard let currentStudent = students?[i] else { continue }

if i == 0 {

switch randomValue {

case (0 ... (currentStudent.prob)) :
studentNameLabel.text = currentStudent.name
default :
break
}

} else if i < numberOfStudents {

guard let lastStudent = students?[i-1] else { continue }

switch randomValue {

case (lastStudent.cumProb) ... (currentStudent.cumProb) :
studentNameLabel.text = currentStudent.name
default :
break
}

} else if i == numberOfStudents {

switch randomValue {

case (currentStudent.cumProb) ... 1 :
studentNameLabel.text = currentStudent.name
default :
break
}
}
}
}
}

如上所述,我希望能够说 return currentStudent 代替 StudentNameLabel.text = currentStudent.name 但我没有成功。错误是生成该函数需要一个返回值,这使我推测我需要以某种方式在每个循环中返回该值

最佳答案

这就是我实现返回 Student 对象或 nil 的函数的方式。我还对代码进行了一些其他简化以使其更加清晰。

func randomWeightedStudent() -> Student? {
let randomValue = Double.random(in: 0.00 ... 1.00)
guard let students = students else { return nil }
let numberOfStudents = students.count

for i in 0..<numberOfStudents {
let currentStudent = students[i]
if i == 0 {
switch randomValue {
case (0 ... (currentStudent.prob)) :
return currentStudent
default :
break
}
} else if i < numberOfStudents {
let lastStudent = students[i-1]
switch randomValue {
case (lastStudent.cumProb) ... (currentStudent.cumProb) :
return currentStudent
default :
break
}
} else if i == numberOfStudents {
switch randomValue {
case (currentStudent.cumProb) ... 1 :
return currentStudent
default :
break
}
}
}
return nil
}

关于swift - 从函数内的各个循环返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57657830/

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