首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Swift| 基础语法(四)

前言 总结下 swift下的基础语法,里面涉及到:常量&变量、Swift中的数据类型、逻辑分支、循环、字符串相关、数组和字典、方法的书写调用等内容,考虑到阅读体验分多篇来展示,希望对大家学习swift...Swift 中的闭包有很多优化的地方: 1 根据上下文推断参数和返回值的类型 2 从单行表达式闭包中隐式返回 可以省略return 3 可以使用简化的参数如 $0 $1 意为从0或者1开始 4 提供了尾随闭包的语法...in return num1+num2; } let count1 = self.countNum(2,3) print("count1: \(count1)") // 有参数无返回值的闭包...; } let newValue = countNum11() print("count3: \(newValue)") 闭包的调用都带有 ()//这个表示执行 @noescape 和 @escaping...四、构造函数 普通构造函数 //构造方法 init(name: String, age: Int) { //当属性名和参数名相同时 需要加上 self来区分 self.name = name

1.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Swift 3到5.1新特性整理

    抹平嵌套可选 检查整数是否为偶数 字典compactMapValues()方法 撤回的功能: 带条件的计数 Swift 4.2 CaseIterable协议 警告和错误指令 动态查找成员 有条件地遵循协议的增强...)协议增加了prefix(while:), drop(while:)两个方法 Swift 3.0 函数调用必须使用参数标签 移除多余代码 枚举和属性从大驼峰替换为小驼峰 更swift地改进C函数 名次和动词...抹平嵌套可选 struct User { var id: Int init?...SE-0218,为字典添加了compactMapValues()方法,这个就像结合了,数组compactMap()方法(遍历成员,判断可选的值,然后丢弃nil成员)和字典的mapValues()方法(...更加语义化的改进,到现在5.1的时候一直在改进,目前官网最近的规范Swift.org - API Design Guidelines方法的部分是: 按照它们的副作用来命名函数和方法 无副作用的按照名次来命名

    4.7K20

    Apple Swift编程语言入门教程

    Swift采用了Objective-C的命名参数和动态对象模型。提供了对Cocoa框架和mix-and-match的互操作性。基于这些基础,Swift引入了很多新功能和结合面向过程和面向对象的功能。...numbers.map({number in 3 * number}) 你可以通过数字而不是名字来引用一个参数,这对于很短的闭包很有用。一个闭包传递其最后一个参数到函数作为返回值。...String { return "A shape with \(numberOfSides) sides." } } Note 练习 通过 "let" 添加一个常量属性,以及添加另一个方法能接受参数...函数的参数名仅用与函数,但方法的参数名也可以用于调用方法(除了第一个参数)。缺省时,一个方法有一个同名的参数,调用时就是参数本身。你可以指定第二个名字,在方法内部使用。...到操作符之前类似于方法属性。如果值在"?"之前就已经是 nil ,所有在 "?" 之后的都会自动忽略,而整个表达式是 nil 。另外,可选值是未包装的,所有 "?" 之后的都作为未包装的值。

    2.1K30

    Swift入门:类

    有三种解决方案: 1、使这两个值成为可选字符串; 2、为它们提供默认值; 3、编写自己的初始化器。 第一个选项很笨拙,因为它在我们的代码中引入了不需要的选项。...为此,在类中创建一个名为init()的方法,该方法接受我们关心的两个参数: class Person { var clothes: String var shoes: String...如果你愿意的话,你可以给他们取唯一的名字——这取决于你自己。 重要提示:Swift要求所有非可选属性在初始化方法结束时或在初始化方法内调用任何其他方法时(以先到者为准)都有一个值。...这就产生了一个问题,这是一个需要以非常特殊的方式解决的问题: Swift希望所有非可选属性都具有值。 我们的Singer类没有噪音等级。...} } 注意它的初始值设定项是如何接受三个参数,然后调用super.init()将name和age传递给Singer超类的——但只有在设置了它自己的属性之后。

    75410

    Swift基础 类型铸造

    Swift基础 - 类型铸造 翻译自:https://docs.swift.org/swift-book/LanguageGuide/TypeCasting.html 类型转换是一种检查实例类型的方法,...定义类型铸造的类层次结构 您可以使用带有类和子类层次结构的类型转换来检查特定类实例的类型,并将该实例转换为同一层次结构中的另一个类。...第一个子类“Movie会封装有关某部或某部电影的其他信息。它在基础MediaItem类之上添加了一个director属性,并带有相应的初始化器。...(Double,Double)电影“Ghostbusters”和一个接受String值并返回另一个String值的闭包表达式。...Ivan Reitman // Hello, Michael 注意 Any类型表示任何类型的值,包括可选类型。如果您使用可选值,其中需要Any类型的值,Swift会向您发出警告。

    9000

    使用 Swift 提高代码质量

    解耦 - 1.组件间通信解耦使用HashMap传递参数进行通信。2.跨技术栈边界的场景,混合栈间通信/前后端通信使用HashMap/JSON进行通信。...使用init注入代替可选值属性 不推荐 class Object { var num: Int?...= nil) { } test(1) 提示:相比ObjC,参数默认值也可以让我们定义更少的方法。 限制参数数量 当方法参数过多时考虑使用自定义类型代替。...3.实现抽象类的能力。 Extension 使用extension组织代码 使用extension将私有方法/父类方法/协议方法等不同功能代码进行分离更加清晰/易维护。...如果属性/方法申明为@objc还会生成对应的方法列表。 提示:struct无法代替class的一些场景:1.需要使用继承调用super。2.需要使用引用类型。3.需要使用deinit。

    4.7K30

    iOS面试题-Swift篇

    来定义一个可选型 值类型或者引用类型都可以是可选型变量 泛型主要是为增加代码的灵活性而生的,它可以是对应的代码满足任意类型的的变量或方法; 泛型可以将类型参数化,提高代码复用率,减少代码量 它们遵循的基本规则...,使用 copy-on-write将值传递与复制开销降到最低 如何将Swift 中的协议(protocol)中的部分方法设计为可选(optional)?...和OC中的初始化方法 (init) 有什么不同?...自动闭包是一种自动创建的用来把作为实际参数传递给函数的表达式打包的闭包。它不接受任何实际参数,并且当它被调用时,它会返回内部打包的表达式的值。...可选链是一个调用和查询可选属性、方法和下标的过程,它可能为 nil 。如果可选项包含值,属性、方法或者下标的调用成功;如果可选项是 nil ,属性、方法或者下标的调用会返回 nil 。

    3.6K40

    Swift 面向对象解析(一)

    3 : 如果将存储属性的类型申明为可选类型,系统就可以将这些属性的初始值设置为 nil (大家一定注意,Swift的nil和OC的nil完全不一样,Swift的nil是一个确定的值,叫缺失值,而OC的nil...// prints"six times three is 18" 七:可选链 Swit 的所有类型默认是不能接受nil值的,如果程序想让某种数据类型能够接受nil值,则要将这种数据类型包装成可选类型:...,这种可选类型必须强制解析才能获得被包装的值。        2:在原有类型的后面添加 ! ,这种可选类型可有Swift隐式的解析被包装的值。        ...其实你掌握了可选类型的使用,可选链就没什么难度了,下面具体用法下面链接讲的很清楚: Swift 可选链  八:构造器 构造器用于完成实例的构造过程,这个过程包括为实例中的每个存储属性社会中初始值和执行必要的准备和初始化任务...它的本质其实就是一个或者多个名为 init 的函数。

    1.8K70

    下标「建议收藏」

    语法类似于实例方法语法和计算型属性语法的混合。与定义实例方法类似,定义下标使用 subscript 关键字,指定一个或多个输入参数和返回类型;与实例方法不同的是,下标可以设定为读写或只读。...注意 Swift 的 Dictionary 类型的下标接受并返回可选类型的值。上例中的 numberOfLegs 字典通过下标返回的是一个 Int? 或者说“可选的 int”。...下标选项 下标可以接受任意数量的入参,并且这些入参可以是任意类型。下标的返回值也可以是任意类型。下标可以使用可变参数,并且可以提供默认参数数值,但是不能使用输入输出参数。...Matrix 结构体的下标接受两个整型参数: struct Matrix { let rows: Int, columns: Int var grid: [Double] init(rows: Int...通过传入数组长度和初始值 0.0 到数组的构造器,将矩阵中每个位置的值初始化为 0.0。关于数组的这种构造方法请参考 创建一个带有默认值的数组。

    1.1K20

    swift4.0语法杂记(精简版)

    在swift中所有的代码都被封装在{}里面 OC使用alloc init进行初始化,而swift使用() OC中使用[]来调用方法,而swift中采用点语法。...但是开发中将变量赋值为空是在所难免的事情,因此就推出了可选类型。 可选类型是swift的一大特色,在定义变量时,如果指定这个变量是可选的话,就是说这个变量可以有一个指定类型的值或者为nil。...在swift中可以给方法的参数设置默认值。...有些时候,在创建方法的时候,并不确定参数的个数,于是swift推出了可变参数。...//这个函数接受一个String和一个闭包 //函数体内调用闭包,并且将String作为参数传递给闭包 func myFunc(strP:String,closeP:(String)->Void) {

    15.4K90

    Swift 项目中涉及到 JSONDecoder,网络请求,泛型协议式编程的一些记录和想法

    对于来自网络的 JSON 结构化数据的处理,可以使用 JSONDecoder 这个苹果自己提供的字符串转模型类,这个类是在 Swift 4 的 Fundation 模块里提供的,可以在Swift 源码目录...其它对 JSON 处理的库还有 SwiftyJSON GitHub - SwiftyJSON/SwiftyJSON: The better way to deal with JSON data in Swift.../put", method: .put) Alamofire.request("https://httpbin.org/delete", method: .delete) 可以看出在 request 方法里有个可选参数...翻下 NSURLRequest 提供的那些可选设置项还不少,如果把这些设置都做成一个个可配参数那么后期维护会非常麻烦。所以我打算使用链式来弄。先 fix HTTPMethod 这个。...("https://httpbin.org/get") 就刚才提到的请求参数来说,Alamofire 是定义了一个 ParameterEncoding 协议,协议里规定一个统一处理的方法 func encode

    6.7K20

    谈谈 Swift 中 Sequence(序列) 、Collection(集合) 和高阶函数

    当我们自定义集合要遵循RangeReplaceableCollection的时候,我们需要提供一个默认的init方法,以及replaceSubrange(_ with:)方法。...下面我们就来实现这两个方法,和想要的remove方法: 在RangeReplaceableCollection源码中我们还可以看到,除了默认的init方法,还允许我们用一个Sequence集合来初始化,...高阶函数也是函数,有两个特点 接受函数或者闭包作为参数 返回值是一个函数或者闭包 这些函数我们常常用来作用于Array,Set,Dictionary中的每一个元素。...formIndex(after: &i) } _expectEnd(of: self, is: i) return Array(result) } } 我们可以看到这是一个泛型函数,接受一个闭包作为参数...在LazySequence的init方法中就很简单了,直接保留了原有的集合数据。 LazySequence遵守了Sequence协议,提供了生成迭代器的方法。

    2.2K30

    Swift入门:枚举

    枚举(Enumerations)通常称为“ enum”,发音为“ ee-num”,是一种在Swift中定义自己的值的方法。在某些编程语言中,它们只是简单的小事,但是Swift给它们增加了巨大的功能。...如果我们将其设为枚举,则意味着Swift将仅接受这五个值-其他任何情况都会触发错误。在幕后,枚举通常只是简单的数字,比计算机使用的字符串要快得多。...带有附加值的枚举 (关联值枚举) Swift最强大的功能之一是枚举可以具有您定义的附加值。为了进一步扩展这个越来越令人怀疑的示例,我将为.wind案例添加一个值,以便我们可以说风速有多快。...提示:Swift的可选参数实际上是使用关联值枚举实现的。有两种情况:none和some,some具有可选值内的值。...本文来自Hacking with Swift给swift初学者的入门课程Swift for Complete Beginners 的Optional Chaining 可选链

    78220
    领券