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

Swift| 基础语法(四)

重写属性的Set、get发方法 ---- 一、闭包 Swift 中闭包的概念就像是Objective-C中的block。...OC中的block类似于匿名函数,闭包是用来定义函数, 同时闭包可以嵌套和作为参数传递。 在 Swift 中,函数也只不过是一种特殊的闭包。...Swift 中的闭包有很多优化的地方: 1 根据上下文推断参数和返回值的类型 2 从单行表达式闭包中隐式返回 可以省略return 3 可以使用简化的参数如 $0 $1 意为从0或者1开始 4 提供了尾随闭包的语法...如果这个闭包是在函数执行完后才被调用,调用的地方超过了这函数的范围,所以叫逃逸闭包。 举个例子 就是我们常用的masonry或者snapkit的添加约束的方法就是非逃逸的。因为这闭包马上就执行了。...想要在 Swift 中使用 weak delegate,我们就需要将 protocol 限制在 class 内。

1.4K10

Swift讲解专题七——函数 原

Swift讲解专题七——函数 一、引言         函数是有特定功能的代码段,函数会有一个特定的名称调用时来使用。Swift提供了十分灵活的方式来创建与调用函数。...事实上在Swift,每个函数都是一种类型,这种类型由参数和返回值来决定。Swift和Objective-C的一大区别就在于Swift中的函数可以进行嵌套。...二、函数的创建与调用         函数通过函数名,参数和返回值来定义,参数和返回值决定一个函数的类型,在调用函数时,使用函数名来进行调用,示例如下: //传入一个名字 打印并将其返回 func printName...") } sayHello() 上面介绍的函数类型都比较常见,对于多返回值的函数,在Objective-C中十分难处理,开发者通常会采用字典、数组等集合方式或者干脆使用block回调,在Swift中,可以使用元组作为函数的返回值...,Objective-C一般会使用list指针来完成,在Swift中编写这样的函数十分简单,示例如下: func func5(param:Int

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

    encodeURIComponent()函数在url传参中的作用和使用方法

    为什么使用 encodeURIComponent() 在使用 URL 传参的时候,如果参数中有空格等特殊字符,浏览器可能只会读取到空格面前的内容,导部分致数据丢失。...定义和用法: encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。 语法: encodeURIComponent(URIstring) 参数: URIstring必需。...一个字符串,含有 URI 组件或其他要编码的文本。 返回值: URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。...3、请注意 encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。...未经允许不得转载:w3h5 » encodeURIComponent()函数在url传参中的作用和使用方法

    11.2K21

    Swift解读专题一——Swift2.2语言预览

    语言与Objective-C、Java语言的函数特点:         Objective-C实际上并没有函数重载的概念,不同参数的函数实际上拥有不同的函数名,Objective-C的风格将参数名嵌套进函数名中...在Objective-C中,如果需要某个函数返回一组值,开发者通常会需要使用字典或者数组,这样做有一个问题,在调用此函数时,返回值的意义十分模糊,开发者需要明确的知道其中数据的顺序与意义。...Swift中可以采用返回元组的方式来处理一组返回值,示例如下: //返回一组数据的函数 func calculateStatistics(scores: [Int]) -> (min: Int, max...在Swift中同样也有set和get方法,只是这里的set和get方法与Objective-C中的set和get方法有很大的不同,Objective-C中的get和set方法是截获了属性和存取过程,在其中加入额外的其他操作...        Swift中的枚举和C与Objective-C有很大的差别,在Swift中,枚举也被作为一种数据类型来处理,其中可以添加函数方法。

    2.1K20

    Swift进阶一:Swift简介

    Swift语言引入了协议、协议的扩展、泛型等新特性,因此使用Swift语言可以很好地面向协议编程;Swift语言将函数和闭包提升为语言的一等公民,函数可以作为一个变量、可以作为其他函数的参数、作为其他函数的返回值等来传递...,所以我们可以使用Swift来进行函数式编程,另外Swift也提供了很多高阶函数来辅助我们进行函数式编程;Swift也提供了属性的权限限定等面向对象的基础设置,因此在Swift中也可以面向对象来编程。...4,枚举类型的增强 在Swift中,枚举可以使用整型、浮点型、字符串等来表示其枚举成员的原始值,还能拥有属性和方法,甚至支持泛型、协议、扩展等等。...7,函数和闭包 在Swift中,函数是一等公民,可以直接定义函数类型的变量,可以将函数作为其他函数的参数来传递,也可以将函数作为其他函数的返回值。这些特性可以让我们在Swift中进行函数式编程。...在Objective-C中,函数仍然是次等公民,我们需要对其进行selector的封装或者利用block来实现Swift中类似的效果。

    2.8K20

    Swift 是猴还是猿?

    9.强制使用大括号 在C/Objective-C中,if、while、for之后的语句假如只有一行,是可以省略掉大括号的 。...Eg: 元组的最大用途在函数可以返回多个值: 闭包 Swift里面定义一个闭包,闭包 = {(形参) -> 返回值 in 代码实现},in 用于区分函数定义和代码实现: 最简单的闭包,如果没有参数.../返回值,则参数/返回值/in 统统都可以省略 范型 范型的应用场景: swapTwoInts(::)、swapTwoStrings(::) 和 swapTwoDoubles(::) 的函数功能都是相同的...在实际应用中,通常需要一个更实用更灵活的函数来交换两个任意类型的值,Swift里面通过范型来解决。...3.x到4.x一个典型的改动点是关于set selector,在Swift 3.x时,selector函数定义前不需要添加@objc修饰。Swift 4.0中则必须要加@objc修饰。

    3.9K30

    Swift的初认识

    假如之前已经掌握了 Objective-C,切换到 Swift 也不难。Swift 中很多概念在 Objective-C 中已经存在。...随着时间推移,Swift 在整个 iOS/Mac 工程中占的代码比例会越来越多,而 Objective-C 作为粘合层还是会存在。 2.Swift的优缺点。...优点: 1.简洁的 class、extension 和 property 定义方式。 OC 定义一个 class 至少需要 4 行,而 swift 只需要两行。...新建类的成本大大降低,可以避免因为书写成本高而没有使用类的情况,而此时新建类通常使代码更加整洁。 2.支持命名空间。 3.支持函数重载。 4.override 修饰符。...低成本且使用方便的数据集合。它提供了函数多个返回值功能。 6.简洁的闭包写法。{ a in … } 比 C/OC 中丑陋的 block 写法好很多。 7.支持运算符重载。

    56130

    Swift编译之SIL(Swift Intermediate Language)

    // 表示最终的、经过规范化的SIL代码 sil_stage canonical // 内建模块,提供了一些底层的内建函数和类型,这些函数和类型通常用于Swift编译器生成的代码中,执行一些特定的低级操作...Objective-C @objc deinit } extension Person { func drink() } // 使用sil指令定义一个名为main的函数,程序的入口点...sil private [thunk]指令定义Objective-C中的thunk实现,将@objc修饰的Person.say()映射到Swift中的main.Person.say()方法 // @objc...sil private [thunk]指令定义Objective-C中的thunk实现,将@objc修饰的Person.init()映射到Swift中的main.Person.init()方法 // @...,表明这是一个方法,在Swift中,方法调用与函数调用有一些不同之处,例如它们使用隐式的self参数 // (@guaranteed Person) -> ():这是函数的参数列表@guaranteed

    31141

    汇编寄存器的规则

    # 汇编寄存器的规则 在本章中,您将了解到 CPU 使用的寄存器,并研究和修改传入函数的参数。您还将了解常见的苹果计算机架构,以及如何在函数中使用它们的寄存器。这就是所谓的架构调用约定。...“在 x64 中调用函数时,寄存器的方式和使用遵循非常特定的规则。这决定了函数的参数应该去哪里以及函数完成时函数的返回值应该在哪里。..." 现在,该探讨带有参数的 Objective-C 方法了。...首先,在 Swift 调试上下文内寄存器不可用。意味着你不得不获取到任何你想要的数据,并使用 OC 调试上下文打印出传入 Swift 函数的寄存器。...RAX 寄存器用于函数中的返回值,无论您使用的是 Objective-C 还是 Swift。 您可以利用寄存器做很多事情。尝试浏览您没有源代码的应用;将为解决棘手的调试问题奠定良好的基础。

    2.6K50

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

    某些开发者为了让Objective-C和swift代码兼容,会尽少在Objective-C中定义宏。...取消了Objective-C中的指针等其他不安全访问的使用 使用点语法来调用属性或者函数 去除了NS前缀 3、为什么要学习swift swift作为面向协议语言,不仅能写移动端,也可以做到搭建服务器端。...swift与objective-C的重大区别 在swift中是没有.h和.m文件之分的。所有的代码全部都存储在一个文件里面。...五、可选类型 在Objective-C开发中,如果一个变量暂时不会使用到,可以将它赋值为0或者赋值为空,而在swift中,nil是一个特殊的类型,如果它和真实类型不匹配是不能进行赋值的。...类似于objective-c中的block,其实函数就相当于一个特殊的闭包。闭包需要提前写好,在适当的时候再执行。

    15.4K90

    【iOS 开发】NSError ** 与 throws 的三个问题

    另外,基于 Objective-C 的语言特性,这里我们无法阻止调用者对 error 参数传递 nil,但是这个方法在这种情况下依然需要告知调用者是否执行成功,所以返回值是一个必要的设计。...上面那个方法在 Swift 中是这样的: func removeItem(atPath path: String) throws 没有返回值 Objective-C 中为了对外部创建的 NSError...赋值,使用了双指针设计,即 NSError *__autoreleasing*,这种做法在 Swift 语言中,变成了 inout 关键字: func swapTwoInts(_ a: inout Int..., _ b: inout Int) { let temporaryA = a a = b b = temporaryA } 这实现了在函数中修改参数值,按照这种写法,是不是我们可以臆想出一种完全对应于..., error: inout NSError) -> Bool // 臆想版本 理论上或许可行,但是这里我臆想出的这个版本,和 OC 中这个方法的设计,都是不好的设计:为了方便,很多时候开发者会对 error

    1.9K20

    现代的新语言–Swift初探

    ,泛型支持,支持命名空间,去除隐式类型转换,多返回值等这些优秀的特性让这门语言显得现代和便捷,再加上学习了非常多其它语言类似Go,JavaScript等等的优秀语法,它同一时候兼具编译语言的高性能和脚本语言的交互性...注意这里的nil并非Objective-C里使用的nil空指针,而是一种NilType。 当我们确定它不为空的时候则能够加上”!”...如运算的那个样例,我们能够借助String的toInt()函数和”!”来完毕我们想进行的运算。...loop = 0 for i in 0..3 { loop++ } loop //3 那假设想让i取边界值,能够用0…3来取代0..3 函数 函数在Swift中变得十分灵活起来,它能够支持单一返回值...可变參数的多返回值 多个不同类型或同样类型的值组成的数据结构Swift里称为元组(tuple) 以下一个函数传入可变參数,使用元组返回多个值 func caculate(numbers: Int…) -

    75420

    Swift是花拳绣腿吗?——谈谈开发语言与程序员的职业发展

    无独有偶,在WWDC2015中,苹果在新版的Safari和WebKit中增加了一个针对JavaScript的新特性。这个特性可以使用${变量}的符号,代替传统的使用“+”对字符串进行拼接的操作。...在下面的代码中,repeat函数可以接受一个闭包类型的task参数。在调用repeat函数时,传入的第二个参数是一个函数体,其中包含了一行打印语句。 那么什么是闭包呢?...在Swift中使用泛型很方便,语法和Java、C#、C++也很类似。 不过使用Objective-C的朋友也有福了,在即将发布的XCode7中,Objective-C也支持泛型了。...比如一个返回值为int的函数,可以通过返回nil来表示函数出错的情况。而不需要使用NSError,也不需要通过返回某些特殊int值来表示错误,比如“-1”或“-IntMax”。...如果与 Objective-C比较,Swift在书写效率上完胜。 在编译效率上,由于Swift没有.h头文件和一些其他特性,因此比Objective-C在理论上要快。

    1.7K30

    nextline函数_在JAVA中Scanner中的next()和nextLine()为什么不能一起使用?

    不是预期的 “abc cba” 和 “efg gfe” 2. nextLine 使用举例: 输入 1: 2 abc cba 结果 1: str[0] = “” str[1] = “abc” 原因:以回车...回车符 “\r” 它被丢弃在缓冲区中,现在缓冲区中,只有一个 \r ,于是 下一次 nextLine 扫描的时候就又扫描到了 \r,返回它之前的内容,也是啥都没有 “” ,然后再把 \r 去掉, 对于...这个扫描器在扫描过程中判断停止的依据就是“结束符”,空格,回车,tab 都算做是结束符 而坑点在于 next 系列的,也就是下面这些函数:next nextInt nextDouble nextFloat...这些函数与 nextLine 连用都会有坑 坑点就是 next 系列的函数返回了数据后,会把回车符留在缓冲区,因此我们下一次使用 nextLine 的时候会碰到读取空字符串的情况 解决方案:输入都用...nextLine ,做格式转换 输入 next 系列函数调用后,中间调用一次 nextLine 调用去掉了回车符后,再调用一次 nextLine 调用真正输入我们的数据 都使用 nextLine: class

    2.7K10

    窥探Swift编程之错误处理与异常抛出

    一、主动退出程序的几种情况 在Objective-C中,在单元测试时我们会使用断言,断言中条件满足时会产生异常,并打印出相应的断言错误,在Swift中也有几种产生异常的语法。...Assertions(断言) 在单元测试中是少不了断言的,Swift中的断言和Objective-C的区别不是太大,使用方法也是大同小异。...二.Swift中的错误处理 在Objective-C中,如果你处理过错误的话,那么你将会对NSError很熟悉。在Swift中,如果你要定义你自己的错误类型,你只需要实现ErrorType协议即可。...声明完错误类型后,就可以在处理错误抛出异常时使用自定义的错误类型了。下方将会一步步带你走完Swift中的错误处理的路程。 1.使用枚举创建错误类型 (1).遵循ErrorType协议,自定义错误类型。...在创建完err实例后,我们又调用延展contextString()函数获取异常的上下文信息,并把返回的内容存储在err实例的context属性中。

    2.3K50

    窥探Swift系列博客说明及其Swift版本间更新

    Swift到目前为止仍在更新,每次更新都会推陈出新,一些Swift旧版本中的东西在新Swift中并不适用,而且新版本的Swift会添加新的功能。到目前为止,Swift为2.1版本。...更新也就是在原有的基础上去更新,所以学学Swift还是很有必要的。新的Swift版本中引入了好多新的概念,比如if-let,guard,柯里化,自定义Quick Help等等。...一:Swift语言版本更新 之前陆陆续续的也发表过一些关于Swift语言的博客,由于Swift版本间的差异,所以之前博客中的某些代码,更确切的说是某些语法在最新的Xcode中会编译不过去的。...不过不用担心Apple公司已经为我们考虑好了,在Xcode中就带有Swift语言版本更新的工具,该工具可以将代码更新到最新的Swift语言版本中。...4.点击Next会进入转换状态,转换完就会进入对比状态,这一点和使用Xcode进行提交SVN特别像。你可以查看那些地方被转换过。具体效果如下: ?

    79860

    Swift基础 基础知识

    这些被称为常数,比C中的常数强大得多。在整个 Swift 中,常量会使用,使代码在处理不需要更改的值时更加安全、更清晰。...除了熟悉的类型外,Swift还引入了Objective-C中没有的高级类型,例如元组。元组使您能够创建和传递值分组。您可以使用元组从函数中返回多个值作为单个复合值。...Swift还引入了可选类型,用于处理值缺失的情况。可选内容要么说“有一个值,它等于x”或“根本没有值”。使用可选类似于在Objective-C中使用nil和指针,但它们适用于任何类型,而不仅仅是类。...在Objective-C中,’ nil ‘是一个指向不存在对象的指针。在Swift中,’ nil ‘不是一个指针——它是一个特定类型的值的缺失。...可以使用带有可选绑定的常量和变量。

    15500

    Swift 周报 第二十一期

    该提案主要目的是通过减少对已声明的 Swift API 可见性的负面影响,来提高 Swift 中现有 Objective-C 库的可用性。...希望可以用合成占位符类型来表示 Swift 中已声明的 Objective-C 接口和协议。...讨论 Vapor:如何使用 async-http / Vapor 客户端获取响应 URL[6] 讨论 如何使用函数的返回值而不是使用@Binding 在视图之间传递数据?...社区对提案的这一方面反应不一,许多开发人员担心这会对现有代码中普遍使用打印、镜像和其他基于反射的 API 产生影响。关于支持“按使用量付费”模型和提供丰富的运行时设施之间的紧张关系,有很好的哲学讨论。.../62418 [7] 如何使用函数的返回值而不是使用@Binding 在视图之间传递数据?

    2.1K20

    iOS_泛型 Generics __covariant(协变) __contravariant(逆变)

    4.2、系统类举例 1、泛型 Generics 泛型可以让你使用自定义的类型来编写灵活的、可重用的函数和类型,可以避免重复,以清晰、抽象的方式表达其意图。...在2015年的WWDC上苹果推出了Swift 2.0版本,为了让开发者能从Objective-C更好的过度到Swift上,苹果也为Objective-C带来了Generics泛型的支持。...2、__kindof 类型限制 __kindof:类型限制 使用格式:__kindof XXClass 限制类型是:XXClass类型或XXXClass子类的实例 例1: // 返回值可以是:`UITableViewCell...function、closure、block:其实都是函数指针类型,都具备输入输出的能力,源类型的关系影响函数指针类型的关系主要是通过输入参数和返回值决定的,所以函数指针类型的关系受两种源类型的共同影响...Generics在 Swift/OC 中的应用.

    1K10
    领券