定义一个字符串的变量的方法:
//直接赋值
var str="JobDeer"
//闭包方式
var str:String={
return "JobDeer"
}()
//简化闭包,省略了等号和括号:
var str:String{
return "JobDeer"
}//闭包中可以定义get、set方法。
var str:String{
get{
return "JobDeer"
}
set{
println("set ok")
}
}
//注意用willSet/didSet不能和get/set共同使用的,在使用willSet /didSet时,变量需要有初始值。 所以这么使用:
var str:String="JobDeer"{
willSet{
println("newValue:\(newValue)")
}
didSet{
println("oldValue:\(oldValue)")
}
}
str="new value"//最全的定义形式是
{
(arguments) ->returnType in
code
}(arguments)
var str={
(arg1:String,arg2:String)->String in
return arg1+arg2;
}("Job","Deer")
//基于上面最全的定义方式, 我么可以省略参数的类型:
var str={
arg1,arg2->String in
return arg1+arg2;
}("Job","Deer")
//swift的类型推导,根据后面括号的传参能自动判断参数的类型。
//然后我们可以省略闭包中的返回值类型
var str:String={
arg1,arg2 in
return arg1+arg2;
}("Job","Deer")
//继续简化
var str:String={
return $0+$1;
}("Job","Deer")
//如果闭包中只有一行代码, 其实return 也能省略。
var str:String={
$0+$1;
}("Job","Deer")
//如果闭包没有定义参数 ,像这样
var str:String={
return "JobDeer"
}()
//括号中根本没有传参数,可以把括号省略了.省略括号的同时等号也不能写
var str:String{
return "JobDeer"
}//////普通赋值
var i = 0
var up:Int?{
i = i+1
return i
}
for _ in 0...2{
print("-->\(up!)")
}
//-->1
//-->2
//-->3
//闭包执行,I增加
//////懒加载
var id = 10
class Animal {
lazy var addID:Int? = {
id++
return id
}()
init(){
}
}
let anim = Animal()
print(anim.addID!)
print(anim.addID!)
//11
//11
//闭包执行,anim.addID并未再次增加
Swift字符串变量定义详解
本文详细介绍了在Swift中定义字符串变量的各种方法,包括直接赋值、闭包方式、使用get和set方法、以及如何利用willSet和didSet观察器进行值的监控。此外还展示了如何通过闭包来构造字符串,并提供了简化闭包表达式的技巧。
1772

被折叠的 条评论
为什么被折叠?



