【学习】重学Swift5-基本数据类型

一、基本数据类型

1.声明常量和变量

let maxNum = 10
var currentNum = 0

let x = 10, y = 20, z = 30
let x1 = 10, y2 = 20, z = "30"

var welcomeMessage: String = "hello world"

print(maxNum)
print("x = \(x), y = \(y)")

2.整型、浮点型

Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 
Int UInt 当前平台原生字相同的长度
Double 64位浮点数,至少15位的精度
Float 32位浮点数,至少6位的精度

3.Bool

Bool: true和false
Swift的类型安全机制会阻止你用一个非布尔量的值替换掉Bool

4.类型别名

类型别名是一个为已存在类型定义一个可选择的名字
typealias AudioSample = UInt8
let simple: AudioSample = 32

5.元祖(Tuple)

let error = (1, "没有权限")
print(error.0, error.1)
let error2 = (errorCode: 1, errorMessage: "没有权限")
print(error.errorCode, error.errorMessage)

let (errcode, errMsg) = error
print(errcode, errMsg)

let (_, errMsg) = error
print(errMsg)

6.Optional

var str: String? = nil

var str1: String? = "abc"
if str1 != nil {
  let count = str1!.count
  print(count)
}

// 可选项绑定
if let actualStr = str1 {
  let count = actualStr.count
  print(count)
}

// 隐式展开
var str2: String! = "abc"
let count = str2.count
print(count)

// 可选链
let count = str1?.count
if count != nil {
  let lastIndex = count! - 1
}

/*
原理
Optional是标准库里的一个enum类型
Optional.none 就是nil
Optional.some	则包装了实际的值
范型属性 unsafelyUnwrapped
*/
var str3: Optional<String> = "abc"
if let actualStr = str3 {
  let count = actualStr.cout
}
let count = str3.unsafelyUnwrapped.count

7.字符串

  1. 初始化

    // 字面量
    var emptyString = ""
    // 初始化器
    var emptyStr = String()
    let catCharacters: [Character] = ["C","a","t"]
    let catStr = String(catCharacters)
    
    // 多行
    let softWrappedQuotation = """The White Rabbit put on his spectacles. "Where shall O begin, plaese your Majesty" he asked.
    """
    
  2. 是否是空串

    if emptyStr.isEmpty {
      print("Nothing to see here")
    }
    
  3. 常见操作

    // 可变不可变使用var、let
    var variableString = "Horse"
    variableString += " and carriage" 
    
    // 遍历
    for character in "Dog! Cat!" {
      print(character)
    }
    
    // 拼接
    var newVarStr = variableString + "new sreing"
    variableString += " and carriage" // 末尾追加,不会创建新的
    variableString.append("d")
    
    // 插值
    let multiplier = 3
    let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
    
    // 字符串索引
    let greeting = "Guten tag!"
    greeting[greeting.startIndex]
    // 不能使用greeting[1]这样的
    greeting[greeting.index(after: greeting.startIndex)]
    greeting[greeting.index(before: greeting.endIndex)]
    let index = greeting.index(greeting.startIndex, offsetBy: 7)
    greeting[index]
    
    // 插入
    var welcomeMessage = "hello"
    welcomeMessage.insert("!", at: welcomeMessage.endIndex)
    welcomeMessage.insert(contentsOf: " world", at: welcomeMessage.index(before: welcomeMessage.endIndex))
    // 移除
    welcomeMessage.remove(at: welcomeMessage.index(before: welcomeMessage.endIndex))
    let range = welcomeMessage.index(welcomeMessage.endIndex, offsetBy: -6)..<welcomeMessage.endIndex
    welcomeMessage.removeSubrange(range)
    
    // 子字符串 
    let welcome = "hello, world"
    let index = welcome.firstIndex(of: ",") ?? welcome.endIndex
    let subString = welcome[..<index]
    let newString = String(subString)
    // 比较、前后缀
    let welcome1 = "hello"
    print(welcome == welcome1)
    print(welcome != welcome1)
    print(welcome.hasPrefix("hello"))
    print(welcome.hasSuffix("world"))
    

posted @ 2022-02-18 09:54  weicy  阅读(65)  评论(0编辑  收藏  举报