Swift基础知识

Swift基础知识,第1张

概述1.初始化数组、字典 //Arrayvar array = Array<T>()//Dictionaryvar name = Dictionary<String,value>() 更推荐的写法: //Arrayvar array = [T]()//Dictionaryvar name = [String:Value]() 并且这个”() ” 表示调用Array和Dictionary的初 1.初始化数组、字典
//Arrayvar array = Array<T>()//Dictionaryvar name = Dictionary<String,value>()

更推荐的写法:

//Arrayvar array = [T]()//Dictionaryvar name = [String:Value]()

并且这个”() ” 表示调用Array和Dictionary的初始化方法
比如我创建一个class

class CalculatorBrain{ init() } //会调用init()方法 let instance = CalculatorBran()
2.如果不给方法显示的加private修饰符,那么这个方法就是public的 3.enum可以包含函数,也可以只包含属性,就像calss一样,enum中的case可以和数据类型管理起来
enum op{     case A(Double) //Operand和Double关联起来     case B(String,Double->Double) //UnaryOperation和一个元祖关联     case C(String,(Double,Double)->Double)//二元函数}
4.函数的参数 默认是以let修饰的不可修改的变量
func evaluate(ops: [op]) -> String {     if !ops.isEmpty {          let op = ops.removeLast()     }     }

会报错 :ops是一个不可修改对象,不能被修改
这是因为function在参数前都会默认隐藏一个let,以上的这种写法其实和下面是一样的

func evaluate(let ops:[op]->String){    ...}

所以如果把let修改成var的话就不会报错了
如下:

func evaluate(var ops:[op]->String){    ...}

以上的这种写法和下面是一样的

func evaluate(ops:[op]->String){    var ops1 = ops    ...}

但是要知道的是,这样写并不会改变给函数外的数组。
因为:在Swift中 数组和Struct都做为参数传递的话 都是按值传递。

5.Struct和calss非常相似,Struct也可以有方法。

区别是:

①Struct不能有继承
②Struct是按值传递,class是按引用传递。

6.判断Enum中的值的好办法是使用switch
enum op{     case Operand(Double) //Operand和Double关联起来     case UnaryOperation(String,Double->Double) //UnaryOperation和一个元祖关联     case BinaryOperaion(String,Double)->Double)//二元函数 } func evaluate(ops: [op]) -> String {     if !ops.isEmpty {          var tmp = ops          let op = tmp.removeLast()          switch op {               case .Operand(let operand) //注意这边直接使用了一个"." 这是因为完整的写法是Op.Operand(Double),这里可以直接省略掉.号前面的Op          }     }     }

注意 不要对所有的switch 都加上default的处理。switch一个enum如果穷尽了enum里面的项,那么就不需要再加default处理

7.在项目中如果需要print出对象的具体信息,需要让对象可以转换成String

这个时候就需要如下2个步奏(对struct,enum也适用):

①添加一个属性“description”

var description:String {     get{         return ....     }}

②并且需要这个对象加上一个协议:Printable

完整例子:

enum op:Printable{     case Operand(Double)     case UnaryOperation(String,Double->Double)     case BinaryOperation(String,Double)->Double)     var description:String {          get{               switch self {                    case .Operand(let operand):                         return "\(operand )"                    case .UnaryOperation(let symbol,_):                         return symbol                    case .BinaryOperation(let symbol,_):                         return symbol               }          }     }}
8.在swift中你可以在一个func中嵌套另外一个func
func test(){     func say(word:String){          print(word)     }     say("hello")     say("world")}
总结

以上是内存溢出为你收集整理的Swift基础知识全部内容,希望文章能够帮你解决Swift基础知识所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1077298.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存