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

Swift基础 扩展

Swift中的扩展可以: 添加计算实例属性和计算类型属性 定义实例方法和类型方法 提供新的初始化器 定义下标 定义和使用新的嵌套类型 使现有类型符合协议 在 Swift 中,您甚至可以扩展协议,以提供其要求的实现...如果您使用扩展程序将初始化器添加到为其所有存储属性提供默认值且不定义任何自定义初始化器的值类型中,您可以从扩展的初始化器中调用该值类型的默认初始化器和成员初始化器。...如果您使用扩展程序将初始化器添加到另一个模块中声明的结构中,则新初始化器在从定义模块调用初始化器之前无法访问self。 下面的示例定义了一个自定义Rect结构来表示几何矩形。...这个枚举称为Kind,表示特定整数所代表的数字类型。具体来说,它表示数字是负数、零还是正数。 此示例还向Int添加了一个新的计算实例属性,称为kind,该属性返回该整数的适当Kind枚举情况。...对于数组中的每个整数,函数考虑该整数的kind计算属性,并打印适当的描述。 注意 number.kind已经知道是Int.Kind类型。

11700

Swift基础 枚举

Swift基础 - 枚举 翻译自:https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html 枚举为一组相关值定义了通用类型,并使您能够在代码中以类型安全的方式处理这些值...如果您熟悉C,您将知道C枚举为一组整数值分配相关名称。Swift 中的枚举要灵活得多,不必为每个枚举案例提供值。...或者,枚举大小写可以指定要存储的任何类型的关联值,以及每个不同的大小写值,就像其他语言中的联合或变体一样。您可以将一组常见的相关情况定义为一个枚举的一部分,每个枚举都有与之关联的不同类型值集。...与Swift中的其他类型一样,他们的名字(如CompassPoint和Planet)以大写字母开头。...当您首次在代码中定义枚举时,原始值设置为预填充值,如上面的三个ASCII代码。特定枚举情况的原始值始终相同。当您根据枚举的一个情况创建新常量或变量时,会设置关联值,并且每次这样做时都可能不同。

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

    如何在服务器中Ping特定的端口号,如telnet Ping,nc Ping,nmap Ping等工具的详细使用教程(Windows、Linux、Mac)

    猫头虎 分享:如何在服务器中Ping特定的端口号? 网络调试的实用技巧,学会这些工具,你将成为运维与开发中的“Ping”王!...在日常开发和运维中,我们经常需要检查目标主机上的某个端口是否开启,并确定网络连通性。...本文将为你详细介绍使用 telnet、nc(Netcat) 和 nmap 等工具,在 Windows、Linux 和 macOS 上如何高效地 Ping 某个特定端口。...正文 一、为什么需要 Ping 特定端口? 1. 常规 Ping 的局限性 传统 Ping 只测试 ICMP 通信: 无法确认特定服务是否正常运行。...端口 Ping 的优势: 确认服务是否正常工作。 检测防火墙是否阻止了特定端口通信。

    97920

    Encoding and Decoding Custom Types

    Swift标准库定义了数据编码和解码的标准化方法。 您可以通过在自定义类型上实现Encodable和Decodable协议来使用此方法。...当存在此枚举时,其case充当属性权威列表,在编码或解码可编码类型的实例时该属性必须包含在内。枚举case的名称应与您为类型中的相应属性指定的名称相匹配。...如果在解码实例时它们不存在,或者如果某些属性不应包含在编码表中,则忽略CodingKeys枚举中的属性。...case名称与其原始值之间的关联使您可以根据Swift API设计指南命名数据结构,而不必匹配您正在建模的序列化格式的名称,标点符号和大小写。...,所以类型采用Encodable和Decodable协议使用两个枚举,每个枚举列出在特定级别上使用的完整编码密钥集。

    1.9K40

    使用 key paths 创建自定义查询函数

    前言 作为一个相当严格,静态编译的语言,Swift 可能不会在语法自定义方面提供许多渠道,但这实际上确正好相反。...通过如何在 Swift 中自定义操作符,Swift 中 key paths 的能力,函数/结果构建器 等功能,我们有很多机会为特定用例进行调整 Swift 的语法。...前置操作符,让其可以应用于任何 Bool key paths,以便将其转换为否定(或翻转)其值的函数 ——现在我们可以计算我们的 UnreadArticles 数组了: let unreadArticles...该属性,类别的类型目前被定义为如下所示的枚举: extension Article { enum Category { case fullLength case...操作符一样,我们也可以用 == 运算符进行同样的事情,我们将返回一个返回 Bool 的闭包,然后可以直接传递给筛选器(如 filter 过滤器): func ==(lhs

    2K30

    Swift基础 嵌套类型

    Swift基础 - 嵌套类型 翻译自:https://docs.swift.org/swift-book/LanguageGuide/NestedTypes.html 创建枚举通常是为了支持特定类或结构的功能...同样,可以方便地定义纯属实用程序类和结构,以便在更复杂类型的上下文中使用。为了做到这一点,Swift使您能够定义嵌套类型,从而在它们支持的类型的定义中嵌套支持枚举、类和结构。...要将类型嵌套在另一种类型中,请在它支持的类型的外部大括号中写入其定义。类型可以嵌套到所需的任意级别。...由于BlackjackCard是一个没有自定义初始化器的结构,因此它有一个隐式成员初始化器,如结构类型的成员初始化器中所述。...它们的类型可以从上下文中推断出来,因此此实例的初始化只能通过它们的大小写名称(.ace和.spades)来引用枚举案例。

    10400

    一篇搞定swift详细语言教程 swift学习攻略总结

    如何学习: 掌握Swift中的基本数据类型,如整数(Int、UInt)、浮点数(Float、Double)、布尔值(Bool)和字符串(String)等。...六、枚举与结构体 重点详细内容知识点总结: 枚举和结构体是Swift中用于构建数据模型的基本构建单元。枚举用于定义一组相关的值,而结构体则用于组合多个不同类型的值。...八、协议与扩展 重点详细内容知识点总结: 协议规定了一组方法的列表,但并未实现这些方法。类、结构体或枚举可以遵循一个或多个协议,表明它们可以响应协议中定义的方法。...如何学习: 掌握数组、字典和集合的基本用法。 学习如何遍历和操作集合中的元素。 通过编写代码练习集合类型的使用。...学习Swift中的并发编程模型,如Grand Central Dispatch(GCD)和Operation Queue。 通过编写代码练习并发编程的使用。

    31910

    Swift 周报 第四十二期

    该提案引入了指定函数和闭包只能引发特定具体类型错误的能力。...总体而言,我们的目标是在 Swift 中引入更细致的模式匹配,允许在不消耗值的情况下进行借用和变异,并探索这些增强功能在各种语言结构(如 switch 语句和条件)中的含义。...在 Swift Concurrency 中,主要参与者的执行者负责将工作分派到该队列上,就像常规参与者的执行者(默认执行者)将工作分派到协作队列上一样,如您链接的文章中所述 但并非所有进程都有主线程;它主要是一个与...利用 SwiftUI 绑定的大小写键路径,启用基于枚举大小写的导航和表单控件使用。 使用大小写键路径组合应用程序功能,在构建和组合不同的应用程序功能时特别有用。...Actors 可以确保代码在特定线程上执行,如主线程或后台线程,并帮助同步访问可变状态以防止数据竞争。

    22310

    Swift基础 结构和类

    在Swift中,您在单个文件中定义结构或类,该类或结构的外部接口会自动供其他代码使用。 注意 类的实例传统上被称为对象。...类支持的额外功能以增加复杂性为代价。作为一般准则,更喜欢结构,因为它们更容易推理,并在适当或必要时使用类。在实践中,这意味着您定义的大多数自定义数据类型将是结构和枚举。...上面的示例还定义了一个名为VideoMode的新类,以描述视频显示的特定视频模式。该类有四个变量存储属性。...事实上,Swift中的所有基本类型——整数、浮点数、布尔值、字符串、数组和字典——都是值类型,并作为幕后结构实现。 所有结构和枚举都是Swift中的值类型。...这意味着,您创建的任何结构和枚举实例,以及它们作为属性的任何值类型,在代码中传递时,总是会被复制。 注意 标准库定义的集合,如数组、字典和字符串,使用优化来降低复制的性能成本。

    9900

    Swift 中的 Phantom(幻象)类型

    如果我们再深入一点,就会发现 Swift 标准库将我们上面提到的UTF8类型定义为另一个类似命名空间的枚举中的一个无大小写枚举,称为Unicode。...,我们将定义一个类似的枚举——DocumentFormat——作为三个无大小写的枚举的命名空间,每种格式都有一个: enum DocumentFormat { enum Text {}...>来引用一个文本文档是相当乏味的,所以让我们也使用类型别名为每种格式定义速记。...一个标准的模式 起初,幻象类型在 Swift 中可能看起来有点 "格格不入"。...然而,虽然 Swift 并没有像更多的纯函数式语言(如Haskell)那样为幻象类型提供一流的支持,但在标准库和苹果平台SDK的许多不同地方都可以找到这种模式。

    89720

    Swift 中的幻象类型

    如果我们再深入一点,就会发现 Swift 标准库将我们上面提到的UTF8类型定义为另一个类似命名空间的枚举中的一个无大小写枚举,称为Unicode。...,我们将定义一个类似的枚举——DocumentFormat——作为三个无大小写的枚举的命名空间,每种格式都有一个: enum DocumentFormat { enum Text {}...>来引用一个文本文档是相当乏味的,所以让我们也使用类型别名为每种格式定义速记。...一个标准的模式 起初,幻象类型在 Swift 中可能看起来有点 "格格不入"。...然而,虽然 Swift 并没有像更多的纯函数式语言(如Haskell)那样为幻象类型提供一流的支持,但在标准库和苹果平台SDK的许多不同地方都可以找到这种模式。

    1.5K30

    IOS-swift5.1快速入门之旅

    快速之旅 传统表明,新语言中的第一个程序应在屏幕上打印“Hello,world!”字样。在Swift中,这可以在一行中完成: print("Hello, world!")...添加一个参数,以包括今天在问候语中的特殊午餐。 默认情况下,函数使用其参数名称作为其参数的标签。在参数名称前写入自定义参数标签,或者写入_不使用参数标签。...它返回与原始值匹配的枚举大小写,或者nil如果没有匹配则返回Rank。...请注意hearts上面引用枚举的两种方式:为hearts常量赋值时,枚举大小写Suit.hearts由其全名引用,因为常量没有指定显式类型。...如果枚举具有原始值,则这些值将作为声明的一部分确定,这意味着特定枚举大小写的每个实例始终具有相同的原始值。

    2.1K20

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

    二.Swift中的错误处理 在Objective-C中,如果你处理过错误的话,那么你将会对NSError很熟悉。在Swift中,如果你要定义你自己的错误类型,你只需要实现ErrorType协议即可。...声明完错误类型后,就可以在处理错误抛出异常时使用自定义的错误类型了。下方将会一步步带你走完Swift中的错误处理的路程。 1.使用枚举创建错误类型 (1).遵循ErrorType协议,自定义错误类型。...下方定义了一个错误类型枚举,该枚举遵循了ErrorType协议,在接下来的代码中我们将会使用这个MyCustomErrorType枚举,错误枚举的实现如下所示: 1 //定义错误类型 2 enum MyCustomErrorType...2.使用结构体为错误处理添加Reason 在上面的内容中,使用枚举遵循ErrorType协议的方式定义了特定的错误类型。接下来我们将使用结构体来遵循ErrorType协议,为错误类型添加错误原因。...为了观察确切的文件名,我们需要在确切的Swift源文件中抛出上述异常。在特定Swift源文件中,我们会看到下方的输出结果。从下方的输出日志中,我们可以清楚的看到文件名是一个详细的文件路径。

    2.3K50

    Swift开发规范

    ”作为扩展文件名,其中原始类型名及扩展名也使用 UpperCamelCase 风格,如UIView+Frame.swift; 工程中文件夹或者 Group 统一使用 UpperCamelCase 风格,...一律使用单数形式; 命名中出现缩略词时,缩略词要么全部大写,要么全部小写,以首字母大小写为准,通用缩略词包括 JSON、URL 等;如class IDUtil {}、func idToString()...注释符号与注释内容之间有空格 类继承时, 参数名和类型之间等, 冒号前面不加空格, 但后面跟空格 任何运算符前后有空格 表示返回值的 -> 两边 参数列表、数组、tuple、字典里的逗号后面有一个空格...在代码中灵活的使用一些地标注释,如MARK、FIXME、TODO,当同一文件中存在多种类型定义或者多种逻辑时,可以使用Mark进行分组注释 尽量将注释另起一行,而不是放在代码后 其他 不要使用魔法值...我们通过配置文件可以控制启用或者关闭相应的规则,具体使用规则参照对应仓库的 REAMME.md 文件。 相关规范 Swift 官方 API 设计指南 Google 发布的 Swift 编码规范

    1.5K10

    【读书笔记】The Swift Programming Language (Swift 4.0.3)

    Enumerations * 递归定义的枚举,就是一个演示函数式编程的绝佳示例. * swift 中的枚举,变成了一中,可以有效承载数据和算法的描述性数据结构. * swift 中的 enumeration...Methods * 结构体实例中,方法是否能够修改属性,也受实例本身的可变性的影响. * 结构体或枚举等值类型,允许在实例方法内,直接给 self 赋值,完整替换. * 枚举类型的相关操作,都可以封装在枚举类型自身...,如 AP&BP&CP. * protocol 可以在 extension 中定义自己的方法,任意遵循此协议的类型的实例都可以调用此协议自己的方法实现. --> 可以在 extension 实现协议规定的属性或方法的默认实现...-->可以用 extension-where来指定,仅在特定条件下,才有效的protocal自有协议方法....Access Control * 默认访问级别是 internal,可以在定义它的模块内的各个源文件之间自由使用. * fileprivate 和 private 并存,是因为swift中允许类型嵌套定义

    1.5K100

    15.Swift学习之枚举

    枚举介绍 概念介绍 枚举定义了一个通用类型的一组相关的值,可以在代码中以一个安全的方式来使用这些值 Swift中的枚举是一等类型, 它可以像类和结构体一样增加属性和方法 在 C/OC 语言中枚举指定相关名称为一组整型值...,而Swift 中的枚举更加灵活,不必给每一个枚举成员提供一个值,Swift 中的枚举可以提供的值类型有:字符串,字符,整型值,浮点值等 Swift 中的枚举可以包含方法 枚举类型的语法 使用enum...Method.Mul: print("除法") case Method.Div: print("乘法") default: print("都不是") } 枚举的定义...定义方式一 case关键词表明新的一行成员值将被定义 不像 C 和 Objective-C 一样,Swift 的枚举成员在被创建时不会被赋予一个默认的整数值 下面的例子中,North,South,...C/OC中枚举的本质就是整数,所以C/OC中的枚举是有原始值的,默认是从0开始,而Swift中的枚举默认是没有原始值的, 但是可以在定义时告诉系统让枚举有原始值 注意: 原始值区分大小写 返回的是一个可选值

    55830

    Swift开发规范-修订版

    二、定义、修饰规约 【强制】不要使用魔法值(即未经定义的常量); 正例: let maxDisplayCount = 5 if index == maxDisplayCount {...注释符号与注释内容之间有空格; 类继承,参数名和类型之间等,冒号前面不加空格,但后面跟空格; 任何运算符前后有空格; 表示返回值的 -> 两边; 参数列表、数组、元祖、字典里的逗号后面有一个空格; 【...包含所有情况,可不加default,如遍历枚举类型时 default: break } } } 四、简略规约 【强制】Swift 会被结构体按照自身的成员自动生成一个非...【推荐】在代码中灵活的使用一些地标注释,如MARK、FIXME、TODO,当同一文件中存在多种类型定义或者多种逻辑时,可以使用Mark进行分组注释,方便通过Xcode顶部面包屑进行切换; 代码示例: /...实现每个协议时,尽量在单独的 extension 里来实现; 【推荐】优先创建函数而不是自定义操作符; 【推荐】尽可能少的使用全局命名空间,如常量、变量、方法等; 【推荐】赋值数组、字典时每个元素分别占用一行时

    1.7K50

    iPhone 16 或将配备可拆卸电池 | Swift 周报 issue 57

    简单类型(如Int、String、枚举等)更适合用作集合元素。在并发编程中,可发送性(Sendable)是一个考虑因素,但不应成为唯一决定因素。...6) 讨论如何告诉编译器非隔离对象可以安全地传递到参与者的域中?内容大概问题概述:作者遇到了一个编译器相关的问题,涉及如何在 Swift 中安全地在 actor 和非隔离对象之间传递数据。...此外,还介绍了不同的 List 样式选项,如 plain 、grouped 等,并展示了如何使用 Section 进行分组显示,以及自定义 Header 和Footer 。...文章还深入讨论了如何在 List 中实现元素的添加、移动和删除功能,以及如何自定义左滑操作按钮。最后,提供了完整的示例代码和效果图,帮助读者全面理解和应用这些功能。...文章还提供了一个具体案例,演示了如何在包含 UITableView 的弹出视图中避免手势冲突。通过这些技术,开发者可以更好地优化 iOS 应用中的用户交互体验。

    12600

    苹果暂停高端 Vision 头戴设备研发| Swift 周报 issue 56

    以下是计划中的主要改进: macOS 支持:扩展到 macOS 平台。 命令代理:允许为不同项目指定特定工具链版本。 迁移到纯 Swift:将安装脚本逻辑移至 Swiftly 本身。...5) 讨论在 switch case 中绑定枚举 内容概括 这个问题讨论了在 Swift 中如何在 switch 语句中绑定枚举值。...作者强调他们主要出于学术原因对这个问题感兴趣,并且关注的是如何在 case 语句内引用枚举实例,而不是具体的处理逻辑。...无论是自定义类型还是框架中的现有类型,扩展都可以创建自定义访问器,提升与类型的互动体验。...文章解释了扩展的基本概念及其在所谓的逆向建模中的应用,让你能在无法访问源代码的情况下,仍能为类型添加自定义功能层。通过示例展示了如何在不同情境下使用扩展,包括为类型添加新属性、实现协议及提供默认行为。

    18030

    窥探Swift之函数与闭包的应用实例

    一.Swift中的函数 1. 函数的定义与使用 在介绍Swift中的函数之前,我想用Objective-C中的一个简单的加法函数来作为引子,然后类比着实现一下Swift中相同功能的函数。...,接着要定义个一个枚举来枚举每种函数的类型,下面定义这个枚举在选择函数时会用到,枚举定义如下: 1 //定义两种计算的枚举类型 2 enum CountType:Int { 3 case DiffCount...说白了,就是定义个函数来通过枚举值返回这个枚举值所对应的函数类型。有时候说多了容易犯迷糊,就直接上代码得了。下方函数的功能就是根据传进来的枚举值来返回相应的函数类型。...中的内容也不麻烦,就是除了关联控件和事件外,还定义了一个闭包类型(函数类型),然后使用这个特定的函数类型声明了一个此函数类型对应的变量。...而在数组中的Filter用来过滤数组中的数据,并且返回新的数组,新的数组中存放的就是符合条件的数据。

    1.9K50
    领券