美文网首页
Swift基础语法

Swift基础语法

作者: id_confidence | 来源:发表于2017-08-30 18:10 被阅读0次

let 和 var

let 标识常量
var 表示变量

  • swift :自动推导,var/let的类型是由“=” 右边的类型来隐式推导的,而不是由定义的类型还定义
let a = 10;
vat b = 10;
b = 11;  //b可以做修改,而a不可以
  • swift 有严格的类型控制,所有不同类型直接不可以直接计算,必须由程序员自己转换
let a = 20;
let b = 20.5;

//错误写法
print(a+b); 

//正确写法
print(a+int(b)) ;   //输出 40
或者 print(double(a)+b)   //输出 40.5

//由此看出,不同类型之间无法直接做运算

可选值 Optional

可选值,顾名思义就是要么有值,要么为空(nil).可选值在参与计算时需要解包。

  • 问号(?) 定义时使用,用来定义可选值

  • 感叹号(!) 对可选值值解包,可选值不能为nil ,该类型由程序员负责,解包时如果为nil,程序就会崩溃。

  • Optional是一个枚举值

    • none 无值
    • some 是某个值
  • 定义方式

//1.原始定义方式  常量在定义时,必须有初始值
let x: Optional = 10

//2.简单定义   定义一个可选的  int类型
let y:int? = 20
  • 可选值常见错误
    解包:从可选值中获取非空值,如果可选值为nil ,程序会崩溃
let x: Optional = 10
let y:int? = 20
//错误写法
 print(x+y)  

//正确写法
 print(x!+y!)    //对于可选值计算,需要解包

注意:常量和变量的可选值不同,var 的可选值默认类型为nil,let默认没有可选值。


if 语法

  • 条件判断不需要 ()
  • 语句必须加 {}
let x = 10
if x>5 {
  print(x)
}

//三目运算
x > 6 ? print("大于") : print("小了")
x > 6 ? print("大于") : () //“()”表示空执行

?? 问号操作符号

  • 强行解包时存在风险,那么我们可以使用 ??规避风险
  • 如果使用 if 判断可选值,将会是代码变得很丑陋
  • ?? 实际上是一个简单的三目运算,当存在值就直接使用,如果为空,则使用 ?? 后面的值
//if 判空
 let x:int? = nil 
if x != nil {
  print(x!)   //此时需要解包
}

//?? 判空
 let y:int? = nil 
print(y ?? 0)  //此时输出不会报错

if let /var 连用语法

  • if let 连用 判断对象的是否为 nil ,{}内一定有值,可以自己使用,无需解包。
  • if var 连用 判断对象的是否为 nil ,{}内一定有值,可以自己使用,无需解包; 可以修改值。
let  myName:String? = "小陈"
let myAge:int? = 20
if var name = myName,
   let age = myAge {
   name = "小王"  //var 可以修改值,let 不可以
print(name+String(age))  //输出结果是 “小王20”
}


guard let

  • guard 中文翻译,守卫、守护
  • guard let守卫 一定有值,如果为空就直接返回,和 if let相反
  • 规避解包,减少分支层次
let  myName:String? = "小陈"
let myAge:int? = 20
guard  let  name = myName,
            age = myAge else {
            print("name or  age is nil") 
            return
}
//此时使用不必担心为空
 print(name+String(age))  //输出结果是 “小王20”

for 循环语句

在swift中,把之前OC里面的 for(int i=0;i<10;i++)这种写法抛弃,i++/++i也被取消,替代的写法是i += 1,从语法来看,swift对语法要求异常严格,下面我们看看swift中的写法。

格式:for i in 0..<10{ }或者for i in 0...10{ },其中0..<10是一个整体,表示一个半闭半开区间[0,10),0...10表示闭区间[0,10]

//循环打印 10--0,反序遍历  reversed:颠倒、逆转的意思
for i in (0...10).reversed(){
  print(i)
}
//打印的结果就是 10,9,...2,1,0

字符串 Sting 在swift中是一个结构体,可以遍历

let str = "hello world"
//str.characters  字符串的字符数
for c in str.characters{
  print(i)
}

let a = str.lengthOfBytes(using: .utf8)   //a = 11 ,求字符串的字节数
let b = str.characters.count  //b = 11 ,求字符个数,即字符串长度

String

swift中 使用as做类型转换

  let str = '我是中国人'
  let ocStr = str as NSSting
  //此时我们将swift类型的字符串转化成了OC的,然后可以使用OC的方法

字符串拼接 \(变量或者常量)

let a = 10
let b = "song"
let c:int? = 11
let d = "\(a)\(b)\(c ?? : 0)"   //拼接a、b、c  ,可选值要做处理

相关文章

  • swift 基础语法

    swift 基础语法

  • swift学习笔记

    一. swift语法基础 The Swift Programming Language中文版_The Swift ...

  • Swift5 基础教程与进阶合集

    Swift5 基础 Swift5 基础(一)Swift编译流程、基础语法、流程控制、函数、枚举[https://w...

  • Swift基础语法(二)

    swift基础语法(一)swift基础语法二主要讲数据类型 1.字符串 1.在swift中String是一个结构体...

  • Swift系统视频学习

    1、swift5.1基础语法:https://docs.swift.org/swift-book/Language...

  • Swift5.1——前言

    主要是针对Swift5.1,基础语法,和内部剖析。 基础语法 基础语法 流程控制 函数 枚举 可选项 为什么选择S...

  • Swift 枚举(enum)详解

    Swift基础语法总结,来自苹果官方文档: 枚举(Enumeration) 枚举在Swift中是 first-cl...

  • 使用Swift编程语言开发iOS应用(一)

    1. 在开发iOS应用之前需要学习一些Swift语言基础,在Swift Playground上练习Swift语法是...

  • Swift 语法基础

    Swift 基础## 目录 控制流的代码优化 字符串代码注意 swift 的数组 字典和集合 函数

  • Swift基础语法

    Swift基础语法 一.变量和常量 1.定义 let 定义常量,一经赋值不允许再修改 var 定义变量,赋值之后仍...

网友评论

      本文标题:Swift基础语法

      本文链接:https://www.haomeiwen.com/subject/bjwzdxtx.html