Swift_修饰符(final、override、discardableResult、mutating、lazy、inout.....)

如何在Swift中使用Result Result介绍 Swift标准库的Result类型使我们能够使用单个统一类型来表达给定操作的结果(无论成功还是失败)。让我们看一下在哪种情况下Result可能有用的方法,以及一些在开始使用该类型时要牢记的技巧和窍门。 尽管有很多不同的方法可以对Result类型进行建模,但是Swift标准库中内置的方法被声明为通用枚举,它针对结果可能包含的成功值以及遇到的任何错误进行了强类型化。看起来像这样: enum Result<Success, Failure> where Failure: Error 阅读详情


final

//5防止重写
class finalClass{
    
    final var applePen = 1
    final func test(){
        
    }
    
    final class func test2(){
        
    }
    
}

class finalSub: finalClass {
    
    //无法重写基类 定义了 final 的属性和函数
}


//加到class前,无法被继承
final class unDo{
    
}


@discardableResult

@discardableResult //取消如果不使用返回值的警告
    class func unUseReuslt(d x:Int) -> Bool {


mutating

//实例化的时候,实参是不可改变,如果确实需要改的话加 mutating
    mutating func changeby(justA:Int,justB:Int) {




convenience便利构造器

//3 指定构造器 和 便利构造器
class Food {
    var name: String
    init(name: String) {
        self.name = name
    }
    //便利构造器
    convenience init() {
        self.init(name: "[Unnamed]")
    }

}


lazy懒加载(Object-C的懒加载是当使用时才去开辟空间,set get方法)

Swift 懒加载相当于静态空间,只运行一次....只打印一次 a = 1

lazy var a:Int = {
        
        print("a = 1")
        return 1
    }()
var ja:Jason? = Jason(name:"Jason") //Jason 实例化
        var aa = ja?.a
        var aaa = ja?.a
        var aa2 = ja?.a



//inout相当于C++的引用

func typeFunc(xx x:inout Int, yy y:inout Int) {
        
        let value = x
        x = y
        y = value
        
        
    }




通过JLink下载实现工控MCU批量烧录实战案例 利用JLink下载工具实现高效稳定的工控MCU批量烧录,提升产线效率。案例详细解析了脚本配置与自动化流程,突出jlink下载的可靠性和可扩展性,适用于大规模嵌入式部署场景。 阅读详情

相关推荐

ENVI-met新手必看:从零开始创建城市微气候模型(附详细步骤+底图制作技巧)

本文为ENVI-met新手提供从零开始创建城市微气候模型的详细指南,包括环境准备、参数配置、底图制作技巧和三维模型构建步骤。特别针对常见问题提供解决方案,帮助初学者快速掌握城市微气候模拟技术,提升建模效率。

weixin_29269441的博客 405

Swift中final、extension、override、@objc等关键字的使用

1. final final关键字在大多数的编程语言中都存在,表示不允许对其修饰的内容进行继承或者重新操作。 Swift中,final关键字可以在class、func和var前修饰。 1.1 final正确的使用场景 - 权限控制 也就是说这个类或方法不希望被继承和重写,具体情况如下: (1)类或者方法的功能确实已经完备了 这种通常是一些辅助性质的工具类或者方法,特别那种只包含类方法而没有实例方法...

qq_28091923的博客 3242

OTN传送网实战指南:从光层到电层的完整架构解析(附配置示例)

本文深入解析OTN传送网从光层到电层的完整架构,涵盖关键组件、技术实现及配置示例。通过高速公路与光传送网的类比,详细介绍了光层超宽传输管道构建、电层业务调度核心引擎以及控制平面智能运维实战。附有典型组网方案与故障排查指南,助力网络工程师高效部署与维护OTN传送网。

tomato的博客 683

Swift编程语言学习14——Swift中如何使用继承(Inheritance)

一个类可以继承(inherit)另一个类的方法(methods),属性(property)和其它特性。当一个类继承其它类时,继承类叫子类(subclass),被继承类叫超类(或父类,superclass)。在 Swift 中,继承是区分「类」与其它类型的一个基本特征。   在 Swift 中,类可以调用和访问超类的方法,属性和附属脚本(subscripts),并且可以重写(override)这

石佛永不老 1202

Unreal 5 MetaHuman插件全流程:从安装到角色动画生成

本文详细介绍了Unreal 5中MetaHuman插件的全流程使用指南,从安装配置到角色动画生成。通过Quixel Bridge下载预设角色,利用面部捕捉技术赋予数字人模型生命力,并提供材质编辑、性能优化等进阶技巧,帮助用户快速创建照片级真实的虚拟角色。

weixin_29009081的博客 829

sqoop抽取mysql的数据到hive表里面,字段内容被自动截取,导致字段不全的问题解决

今天央视重新转播NBA,写篇博客纪念一下这个重要的日子,湖人的表现就呵呵了!!!! 强行转到博客的主题来 mysql的字段属性:该字段能存下的值比如:“山东” `province` varchar(3) NOT NULL COMMENT '省份' 用sqoop sqoop import --connect "jdbc:mysql://xxxxxx:3306/xxxxxx?tinyInt1isBit=false&zeroDateTimeBehavior=convertToNull..

放肆桀骜 963

Swift-重写-override

//定义一个基类 class Vehicle {    var numberOfWheels: Int    var maxPassengers: Int    func description() -> String {         return "\(numberOfWheels)wheels; up to \(maxPassengers) passen

渔歌子的程序人生 6864

ENVI新手避坑指南:手把手教你搞定遥感影像的坐标系转换(附ArcGIS对比)

本文详细解析ENVI与ArcGIS在遥感影像坐标系转换中的关键差异与实战技巧,特别针对新手常见问题提供避坑指南。从基础概念到高级操作,涵盖定义投影、UTM转换等核心步骤,并对比两种软件的处理精度与效率,帮助用户高效完成遥感影像处理任务。

weixin_42531925的博客 377

Swift学习(十二):继承(内存结构,override重写,多态,属性观察器,final)

继承(Inheritance) 值类型(枚举、结构体)不支持继承,只有类支持继承 没有父类的类,称为:基类 Swift并没有像OC、Java那样的规定:任何类最终都要继承自某个基类 子类可以重写父类的下标、方法、属性,重写必须加上override关键字 内存结构 Dog继承自Animal,也就拥有了age属性, Dog实际占用的内存空间是32个字节,其中指针类型8个字节...

weixin_42433480的博客 527

用Python和NumPy搞定复合材料层合板ABD矩阵计算(附完整代码与避坑指南)

本文详细介绍了如何使用Python和NumPy高效计算复合材料层合板的ABD刚度矩阵,包括单层板刚度计算、偏轴转换和层合板刚度集成。通过完整的代码示例和工程实践技巧,帮助工程师快速构建定制化分析工具,解决航空航天、汽车制造等领域的复合材料力学性能分析问题。特别提供了避坑指南和性能优化策略,确保计算结果的准确性和效率。

weixin_30752699的博客 277

挑战第七天:Llamaindex RAG 实践

安装python 依赖包,并安装 Llamaindex和相关包以及Sentence Transformer 模型。进入开发机后,创建新的conda环境,命名为。镜像,然后在资源配置中,使用。的选项,然后立即创建开发机器。后,点击 选择镜像 使用。然后安装相关基础依赖。

weixin_53579823的博客 728

swift基础语法(26-继承,super关键字,override关键字,final关键字)

继承语法继承是面向对象最显著的一个特性, 继承是从已经有的类中派生出新的类新的类能够继承已有类的属性和方法, 并能扩展新的能力术语: 基类(父类, 超类), 派生类(子类, 继承类)语法: class 子类: 父类{ } 继承优点: 代码重用 继承缺点: 增加程序耦合度, 父类改变会影响子类 注意:Swift和OC一样没有多继承 class Man { var...

abc48765的博客 491

华为OD机试真题2025双机位B卷 Java&Go 实现【朋友圈个数】

给定一组朋友关系,统计一下该朋友关系网中的朋友圈个数。 朋友圈的定义:一个朋友圈至少由3个朋友组成,且要求同一个朋友圈中的任意两个人都具有直接的朋友关系。 输入描述 输入一个朋友关系列表,如 Fiends =A.B],[A.C],IB,DI,其中的每一个元素 Friendsi表示 Friends[i][0)和 Friends [i][1] 是朋友关系 先输入一个数字 N 代表关系的总数,后面每条关系一行,两个成员以逗号分隔

MISAYAONE的博客 518

Swift学习这十七:重载(override)

创建一个基类:Vehicle.swift

标哥 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

iOS开发笔记之九十一——Swift中的mutating关键字

mutating单词翻译过来有“可变化,可改变”的意思。它主要用在Swift中的: 结构体(struct)、枚举(enum) 扩展(extension)、协议(protocol)中修饰方法 Swift结构体(struct)、枚举(enum) 中均可以包含类方法和实例方法 Swift官方是不建议在结构体(struct)、枚举(enum)的普通方法里修改属性变量。 但是,在方法前面添加 mutating 关键字之后就可以在对应的 mutating代理方法内修改。 示例1: protocol Per

iOS开发笔记 8766

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

swift之mutating关键字的使用

在Swift中,structure和enumeration是值类型(value type) class是引用类型(reference type)。 默认情况下,实例方法中是不可以修改值类型的属性,使用mutating后可修改属性的值 例如: 在结构体中,有一个实例方法,如果直接修改属性的值,编译器会报错。 可以使用mutating修饰 struct Point { var x...

jacob_ios的博客 6771

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

将 PROTOCOL 的方法声明为 MUTATING

将 PROTOCOL 的方法声明为 MUTATING 由王巍 (@ONEVCAT)发布于2014/08/17 Swift 的 protocol 不仅可以被class类型实现,也适用于struct和enum。因为这个原因,我们在写给别人用的接口时需要多考虑是否使用mutating来修饰方法,比如定义为mutating func myMethod()。Swift...

dengji2627的博客 233

Swift4 关键字之 @discardableResult

//表示取消不使用返回值的警告 @discardableResult @discardableResult open func executeUpdateLocal(_ a:A?,b : B)-&gt;Bool {}

正在注销账号的博客 2604

Swift中的Result 类型的简单介绍

Swift 5引入了一个新的Result类型, 它使用枚举来处理异步函数的结果。 苹果文档对该类型的描述: A value that represents either a success or a failure, including an associated value in each case. 声明: @frozen enum Result<Success, Failure> where Failure : Error 在Result类型出现之前,我们创建异步函数返回结果的方式:

Rey的技术博客 1084

Swift - final

final 关键字可以用在class、func 和var 前面进行修饰,表示不允许对该内容进行继承或者重写操作。 这个关键字的作用和 C# 中的sealed 相同,而sealed 其实在C# 算是一个饱受争议的关键字。有一些程序员认为,类似这样的禁止继承和重写的做法是非常有益的,它可以更好的对代码进行版本控制,发挥更佳的性能,以及使代码更安全。因此他们甚至认为语言应当是默认不允许继承的,只有在显式的指出可以继承的时候才能子类化。 在这里我不打算对这样的想法做出判断或者评价,虽然上面列举的优点都是事实,但是另

HumorousGhost 804

[译] 如何在 Swift 5 中使用 Result

原文地址:How to use Result in Swift 5 原文作者:Paul Hudson 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:Bruce-pac 校对者:iWeslie SE-0235 在标准库中引入了一个 Result 类型,使我们能够更简单、更清晰地处理复杂代码中的错误,比如异步 API。这是人们在 Swift 早期...

weixin_33872566的博客 915

cuDF libcudf 字符串列的 Unicode 限制解析:UTF-8 编码、大小写转换与正则字符类边界

cuDF 的 libcudf 是 GPU 加速的 DataFrame 库的底层 C++ 引擎,其字符串列(strings column)提供了丰富的字符处理能力,但并非覆盖全部 Unicode 标准。本文以仓库中 [docs/cudf/source/libcudf/unicode_limitations.rst](https://link.gitcode.com/i/bfdf1480527b256

gitblog_01003的博客 793

Swift - final关键字的介绍,以及使用场景

final关键字在大多数的编程语言中都存在,表示不允许对其修饰的内容进行继承或者重新操作。Swift中,final关键字可以在class、func和var前修饰。 通常大家都认为使用final可以更好地对代码进行版本控制,发挥更佳的性能,同时使代码更安全。下面对这些说法做个总结。 1,想通过使用final提升程序性能 - 效果有限 通常认为final能改成性能,因为编译器能从f...

weixin_33778544的博客 224

02-swift-@discardableResult的作用

当有返回值的方法未得到接收和使用时通常会出现图片中的提示: 在正式编译中不会影响编译结果,但是也妨碍代码的美观整洁,在方法上加上“@discardableResult”就可以取消这个警告 还有一种取消警告的方法,不加@discardableResult直接加通配符接收方法返回值 ...

lyz0925的博客 696

Swift 结果类型处理库 Result 指南

本指南旨在帮助您了解并应用 [Result](https://github.com/antitypical/Result.git),这是一个轻量级的Swift框架,用于表示成功或失败的操作,封装了错误处理机制。 ## 1. 项目目录结构及介绍 Result项目的目录组织简洁而高效,主要关注于提供一个强大且易于集成的结果类型。以下是关键的目录和文件概述: - **Result**: 核心源代码...

gitblog_00072的博客 468

Swift中访问权限关键词,final修饰符

一.访问关键词 分别为:open,public,internal,filePrivate,private; 上述的顺序也是从大到小的排序; open:权限最大,允许外部module访问。允许继承,重写; public:允许外部module访问,不允许继承,重写; internal:默认关键词。在同一个module可以共用。注:Swift中绝大部分默认都是internal级别; filePrivate:表示代码可以在当前文件被访问,而不做类型限定; private:表示代码只能在当前作用域或者同

weixin_42180036的博客 842
上一篇: Swift_继承
下一篇: Swift_构造过程(指定构造器、convenience便利构造器、可失败构造器 init?(...))
Gz_Jason_chen
博客等级 码龄11年 49粉丝 141原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值