Swift中如何让print输出对应Bool值?Angela Yu课程相关问题
Swift条件判断中输出正确Bool值的解决方案
问题根源
你代码里的Bool().self是错误用法——每次调用这个表达式都会创建一个全新的布尔值实例,而Swift中布尔类型的默认值是false,所以无论条件判断结果如何,输出的永远是false。另外,第二个条件loveNumber > 40 || loveNumber < 80存在逻辑漏洞:它会匹配所有不等于80的数字,导致第三个分支(else)永远不会被执行。
修正后的代码
根据你的预期需求,这里给出两种可行的修正方案:
方案1:直接输出对应布尔值
利用if-else的顺序特性简化条件,直接输出true或false:
func loveCalli() { let loveNumber = Int.random(in: 0...100) if loveNumber > 80 { print(true, "; You'll love each other like Kanya loves Kanya.") } else if loveNumber > 40 { // 已排除>80的情况,此处只需判断>40即可覆盖41-80区间 print(false, "; You go together like Coke and Mentos.") } else { print(false, "; You'll be forever alone.") } } loveCalli()
方案2:先定义布尔变量再复用
如果需要后续复用这个布尔值,可以先赋值再输出:
func loveCalli() { let loveNumber = Int.random(in: 0...100) let isGreatMatch: Bool if loveNumber > 80 { isGreatMatch = true print(isGreatMatch, "; You'll love each other like Kanya loves Kanya.") } else if loveNumber > 40 { isGreatMatch = false print(isGreatMatch, "; You go together like Coke and Mentos.") } else { isGreatMatch = false print(isGreatMatch, "; You'll be forever alone.") } } loveCalli()
关键注意点
- 直接用
true/false表示布尔值,不要通过Bool()创建默认实例 - 条件判断要避免逻辑重叠,利用分支顺序简化判断条件
内容的提问来源于stack exchange,提问作者BenGee333
相关产品推荐
相关产品推荐

