swift - 初始化前使用的 SWIFT 变量
问题描述
我想知道为什么这段代码不会运行。错误出现在最后一行(打印语句)(最后一个“字母等级”)并说
“在初始化之前使用的变量‘letterGrade’”
let score = 86
var letterGrade: Character
if(score >= 90)
{
letterGrade = "A"
}
else if(score >= 80)
{
letterGrade = "C"
}
else if (score >= 70)
{
letterGrade = "C"
}
else if (score >= 60)
{
letterGrade = "D"
}
else if (score > 0)
{
letterGrade = "F"
}
print("Your letter grade is \(letterGrade)")
解决方案
是的,它在被分配等级之前使用(编译器不知道您在抛出此错误之前已经涵盖了 if 语句中的所有情况 - 事实上,您没有像 @MartinR 告诉您的那样涵盖零)。
您可以通过将第 2 行更改为默认值(在英国,“U”未分级)
var letterGrade: Character = "U"
最好还是用类型推断来说
var letterGrade = "U"
您可能还想使用开关来解决此类问题 - 使用此链接查看 Swift 文档 - https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html
但这是我使用开关的代码版本
let score = 86
var letterGrade: Character
switch score {
case 90 ..< 100:
print("A")
case (80 ..< 90):
print("B")
case (70 ..< 80):
print("C")
case (0 ..< 70):
print("D")
default:
print("F")
}
这克服了编译器错误的问题。
希望这对您有所帮助。
推荐阅读
- ios - 将内容缩放到设备
- makefile - HDF5 库中对 `compress2' 和其他函数的未定义引用
- python - 如何通过以下方式合并两个 DataFrame?
- python - Matplotlib mpl.figure.Figure() 失败,而 fig,ax=plt.subplots() 成功
- angular - 我如何将 html 代码附加到 Angular 中自定义指令的输入字段
- java - 如何注入 JpaRepository 的实现
- python - groupby 并根据另一列的值保留一列的信息
- javascript - JSON.stringify() 行为说明
- python - 无状态显示 matplotlib 图
- javascript - 如何找到给定日期的平均天数?