Swift语言self属性存储属性局部变量和全局变量的区别Swift语言入门很简单大学霸
Swift语言存储属性局部变量和全局变量的区别Swift语言入门很简单大学霸
8.3.3 存储属性、局部变量和全局变量的区别存储属性可以理解为变量的一种Swift语言存储属性局部变量和全局变量的区别Swift语言入门很简单大学霸。所以随着变量使用地方的不同,可以将变量分为存储属性、局部变量和全局变量。这三种变量的不同如表8-1所示。
表8-1 三种变量的不同
变量名称 | 定义范围 |
存储属性 | 定义在类中 |
局部变量 | 函数、方法或闭包内部 |
全局变量 | 函数、方法、闭包或任何类型之外定义的变量 |
Swift语言存储属性局部变量和全局变量的区别Swift语言入门很简单大学霸注意:这里提到的方法在前面已经讲解过了。
【示例8-17】在以下定义了三个类型的变量分别为str、str1、str2,将它们使用在不同的地方。代码如下Swift语言存储属性局部变量和全局变量的区别Swift语言入门很简单大学霸:
import Foundation
let str=”Hello”
class NewClass {
let str1=”Swift”
func printstring(){
let str2=”World”
println(str)
println(str1)
println(str2)
}
}
let newclass=NewClass()
newclass.printstring()
Swift语言存储属性局部变量和全局变量的区别Swift语言入门很简单大学霸在此代码中提到的方法会在以一节中讲解。运行结果如下所示:
Hello
Swift
World
Program ended with exit code: 0
注意:在使用存储属性、局部变量、和全局变量时一定要注意它们的作用域,所谓作用域就是指这些变量的有效范围,图8.5就是以上代码中变量的有效范围。
Swift语言存储属性局部变量和全局变量的区别Swift语言入门很简单大学霸图8.5 作用域
如果一个变量超出了它的有效范围,程序就会出现错误,如以下的代码:
import Foundation
let str=”Hello”
class NewClass {
let str1=”Swift”
func printstring(){
let str2=”World”
println(str)
println(str1)
println(str2)
}
func printstr(){
println(str)
println(str1)
println(str2)
}
}
let newclass=NewClass()
newclass.printstring()
在此代码中str2是一个定义在printstring()方法中的局部变量,所以它的有效范围就是在此方法中。但是在此方法之外使用会出现错误,在此代码中将str2又使用在了方法printstr()中。导致程序出现了以下的出现:
Use of unresolved identifier ‘str2’
8.3.4 局部变量和存储属性同名的解决方法——self属性Swift语言self属性存储属性局部变量和全局变量的区别Swift语言入门很简单大学霸
在一个类中,方法中的局部变量可能和存储属性同名,这是,不可以直接使用相同的名称去访问存储属性,为了解决这一问题,Swift引入了一个self属性。如以下代码,此代码的功能是使用self对存储属性进行访问。代码如下:
import Foundation
class NewClass{
var count:Int=100
func printcount(){
var count:Int=50
println(count)
println(self.count)
}
}
let newClass=NewClass()
newClass.printcount()
count表示的是局部变量的值50,self.count表示存储属性的值100。运行结果如下所示:
50
100
Program ended with exit code: 0
Swift语言存储属性局部变量和全局变量的区别Swift语言入门很简单大学霸
Comments are closed.