//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都做为参数传递的话 都是按值传递。
区别是:
6.判断Enum中的值的好办法是使用switch①Struct不能有继承
②Struct是按值传递,class是按引用传递。
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基础知识所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)