对函数//Swift使用未解析标识符

对函数//Swift使用未解析标识符,swift,Swift,以下更新 我目前正在学院学习Swift入门课程,正在努力学习函数。我以为我很清楚地遵循了说明,但我在“使用未解析的标识符”方面遇到了某种错误 这是全部错误: 错误:My Functions Playway 2.Playway:23:8:错误:使用未解析的标识符“newGPA” 切换新GPA{ 这是我的代码(原始说明如下): var-gpa:Int var attemptedHours:Int var earnedGradePoints:Int //在这里创建您的函数 func gpaUpdate

以下更新

我目前正在学院学习Swift入门课程,正在努力学习函数。我以为我很清楚地遵循了说明,但我在“使用未解析的标识符”方面遇到了某种错误

这是全部错误:

错误:My Functions Playway 2.Playway:23:8:错误:使用未解析的标识符“newGPA” 切换新GPA{

这是我的代码(原始说明如下):

var-gpa:Int
var attemptedHours:Int
var earnedGradePoints:Int
//在这里创建您的函数
func gpaUpdater(小时数:整数,分数:整数){
设为:Int=attemptedHours+moreHours
让newGPA:Int=gpa+moreGPA
打印(新GPA)
}
//调用函数
gpaUpdater(学时:16,年级:60)
//在此处添加新的学时和成绩点,然后再次调用该函数
切换新GPA{
案例0…1.8:
打印(“您将处于暂停状态”)
案例1.8…2.0:
打印(“您将被试用”)
案例3.5…3.8:
打印(“你将被列入院长名单。”)
案例3.9:
打印(“您将被列入总统名单。”)
违约:
打印(“继续,这里没什么可看的。”)
}
说明:

我们将跟踪你从一个学期到下一个学期的GPA。假设在你大二结束时,你尝试了60个小时,并获得了222.5分。将尝试的小时数和分数分配给变量。编写一个函数,更新你当前的GPA,并将其分配给GPA变量(你将在这一过程中进行更新)。标记函数参数。从函数中打印新的GPA

在本学期结束时,在你的成绩记录中增加16小时60分。调用gpa函数更新你的总gpa

在年底测试你的平均成绩,看看是否需要采取任何行政措施。如果平均成绩低于1.8,该学生将被停学。如果低于2.0,我们需要让该学生试用。如果超过3.5,我们将把该学生列入院长名单,如果超过3.9,我们将把该学生列入校长名单t、 创建一个开关,用于打印建议的管理操作。如果不需要任何操作,请打印“继续。此处无需查看”。为参数创建内部和外部标签

谢谢你的帮助

更新

我的Swift代码的功能部分现在是正确的,谢谢大家的帮助。现在我正在尝试修复我的switch语句。这是我的代码:

//在此处添加新的小时数和成绩点,然后再次调用该函数
开关gpa{
gpa>1.8的情况:
打印(“您将处于暂停状态”)
案例1.8…2.0:
打印(“您将被试用”)
案例3.5…3.8:
打印(“你将被列入院长名单。”)
gpa>3.9的情况:
打印(“您将被列入总统名单。”)
违约:
打印(“继续,这里没什么可看的。”)
}
我认为问题是,我的老师希望GPA是整数,但如果我想用像1.9这样的值来表示GPA,那么它必须是双精度的。我得到一个错误:

error:My Functions Playway 2.Playway:26:10:error:binary运算符'>'不能应用于'Int'和'Double'类型的操作数
案例gpa>1.8

范围。范围。范围

newGPA
gpaUpdater
的范围内本地声明。它在顶层不可见

你可以

// create your function here
func gpaUpdater(hours moreHours: Int, grade moreGPA: Int) -> Int {
    // let _: Int = attemptedHours + moreHours
    return gpa + moreGPA
}

// call the function
let newGPA = gpaUpdater(hours: 16, grade: 60)

// add the new hours and grade points here and call the function again
switch newGPA { ...

对于
gpaUpdater
的(未使用的)第一个参数以及切换
Int
的浮点情况,我将从赋值的角度回答这个问题;关于返回局部变量值的其他答案对于访问新的GPA变量是正确的

通过创建“newGPA”变量,您错过了赋值中的要点。赋值状态为使用函数中的新值“更新”全局gpa变量

如果这是介绍性的编码,您可能没有遇到递归的概念。这基本上是通过将自身包含在计算中来赋值

而不是

让newGPA:Int=gpa+moreGPA
打印(新GPA)

思考

gpa = gpa + moreGPA
print(gpa)
也可以写成

gpa += moreGPA
然后在切换功能中使用gpa

它的作用是将全局gpa变量更新为新值(通过向其中添加moreGPA)。这是全局变量的主要优点之一。可以从程序中的任何位置访问和修改该变量


这是我基于赋值指令的理解。也就是说,从函数返回值更干净(在我看来)因为全局变量在更复杂的程序中可能会发生冲突。

newGPA
gpaUpdater
的局部变量,所以
开关不知道它是什么。也许你的函数可以返回值?我想你需要在那里用小时来划分等级。还要注意,
0…1.8
将我明白了
1.8
,但是说明书上说的小于
1.8
。谢谢你的回答。我(我想)明白了修复了函数,现在我正在尝试让switch语句工作。我的老师说gpa是一个Int,但他希望我在switch语句中使用双数。这会导致错误。下面是新的开关代码:
switch gpa{case gpa>1.8:print(“您将被暂停”)case 1.8…2.0:print(“你将被判缓刑”)…案例gpa>3.9:打印(“你将被列入总统名单”)
请告诉您的老师这是胡说八道。
1.8
不能用
Int
表示。这会导致错误。请使用
Int
案例或将
gpa
声明为
Double
谢谢您的帮助。我已经提交了该项目,并将告诉老师Int/Double问题。