语法3

7.字符串

OC中的字符串是NSString, Swift中的字符串是String
OC中的字符串是一个对象,继承于NSObject; Swift中的字符串是一个结构体
Swift中的字符串的性能比OC中的高

定义字符串
var str: String = "Hellow"
print(str.count) // str的长度
// => 6
String转化NSString
let ocString = str as NSString
print("ocString = \(ocString.length)")
// => ocString = 6
字符串的遍历(OC不支持遍历)
for s in str {
      print(s)
}
// => H
// => e
// => l
// => l
// => o
// => w
字符串的拼接 \(常量/变量)
var str: String = "Hellow"
let a2 = "World!"
str = "\(str)\(a2)\(20)"
print(str)
// => HellowWorld!20
str += "下班了"
print(str)
// => HellowWorld!20下班了
字符串的格式化
所有的值都必须放到数组中,只有一个值也需要放到数组中
let date = String(format: "%@年%@月%@日 %@:%@:%02d", arguments: ["2021", "07", "21", "19", "33", 56])
print(date)
// => 2021年07月21日 19:33:56
字符串的截取
let str = "Hellow World!"
let sub1 = str.prefix(3)
let sub2 = str.suffix(4)
print(sub1)
// => Hel
print(sub2)
// => rld!
let sub = String(str[str.index(str.startIndex, offsetBy: 2)..<str.index(str.startIndex, offsetBy: 5)])
print(sub)
// => llo

8.函数

函数数定义格式:
语义:将(参数列表)计算的结果返回给 -> 返回值
func 函数名称(参数列表) -> 返回值
{
执行代码
}

// 没有返回值没能参数,如果函数没有返回值就写Void
func say() -> Void
{
     print("hello")
}
say()
// => hello
func say() -> ()
{
    print("hello")
}
say()
// => hello
func say()
{
    print("hello")
}
say()
// => hello
// 有返回值没有参数
func getNum() -> Int
{
     return 999
}
print(getNum())
// => 999
// 有参数没有返回值
func sum2(a: Int, b: Int)
{
    print(a + b)
}
sum2(a: 2, b: 3)
// => 5
外部参数:就是在形参前面加一个名字
外部参数不会影响函数内部计算
x, y称之为外部参数,a, b称之为内部参数
func sum2(x a: Int, y b: Int)
{
      print(a + b)
}
sum2(x: 1, y: 2)
// => 3
外部参数如果使用 _ ,在外部调用函数时会省略形参的名字
func sum2(_ a: Int, _ b: Int) -> Int
{
      return a + b
}
print(sum2(10, 2))
// => 12
// 有参数有返回值
func sum2(a: Int, b: Int) -> Int
{
     return a + b
}
print(sum2(a: 10, b: 20))
// => 30
函数的默认值
给参数设置默认值,在调用的时候如果不设定值的,使用默认值。
func sum2(a: Int = 11, b: Int = 12) -> Int
{
      return a + b
}
print(sum2())
// => 23

9.闭包

闭包类似于OC的block,但是比OC的block应用更广,在Swift中函数时特殊的闭包。
闭包的使用场景:

  • 异步执行回调
  • 控制器件回调
  • 自定义视图回调
    闭包基本格式:
    {
    (形参列表) -> ()
    in
    需要执行的代码
    }
let aaa = { (x : Int, y: Int) -> Int in
       return x + y
 }
print(aaa(5, 5))
// => 10
let bbb = {(x: Int?) -> () in
       print((x ?? 0))
}
bbb(100)
// => 100
let ccc = {() -> () in
   print("无参数无返回值的闭包")
}
ccc()
// =>  无参数无返回值的闭包
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容