首页 文章 精选 留言 我的

精选列表

搜索[Swift开发],共10000篇文章
优秀的个人博客,低调大师

《从零开始学Swift》学习笔记(Day 55)——使用try?和try!区别

在使用try进行错误处理的时候,经常会看到try后面跟有问号(?)或感叹号(!),他们有什么区别呢? 1.使用try? try?会将错误转换为可选值,当调用try?+函数或方法语句时候,如果函数或方法抛出错误,程序不会发崩溃,而返回一个nil,如果没有抛出错误则返回可选值。 示例代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 //查询所有数据方法 funcfindAll() throws ->[Note]{ guardlistData.count> 0 else { //抛出"没有数据"错误。 throw DAOError.NoData } return listData } letdatas= try ?findAll() print(datas) 上述代码中let datas = try? findAll()语句中使用了try?,datas是一个可选值,本例中输出nil。使用了try?语句没有必要使用do-catch语句将其包裹起来。 2.使用try! 使用try!可以打破错误传播链条。错误抛出后传播给它的调用者,这样就形成了一个传播链条,但有的时候确实不想让错误传播下去,可以使用try!语句。 修改上述代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 //查询所有数据方法 funcfindAll() throws ->[Note]{ guardlistData.count> 0 else { //抛出"没有数据"错误。 throw DAOError.NoData } return listData } funcprintNotes(){ letdatas= try !findAll()① for noteindatas{ print( "date:\(note.date!)-content:\(note.content!)" ) } } printNotes() ② 代码printNotes()函数没有声明抛出错误,在调用它的时候不需要try关键字,错误传播链条在printNotes()函数内被打破了。 代码将try dao.findAll()语句改为try! findAll(),在try后面加了感叹号(!),这样编译器就不会要求printNotes()方法声明抛出错误了,try!打破了错误传播链条,但是如果真的发生错误就出现运行期错误,导致程序的崩溃。 所以使用try!打破错误传播链条时,应该确保程序不会发生错误。 本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1748320,如需转载请自行联系原作者

优秀的个人博客,低调大师

《从零开始学Swift》学习笔记(Day 34)——静态属性是怎么回事?

我先来设计一个类:有一个Account(银行账户)类,假设它有3个属性:amount(账户金额)、interestRate(利率)和owner(账户名)。 在这3个属性中,amount和owner会因人而异,不同的账户这些内容是不同的,而所有账户的interestRate都是相同的。 amount和owner属性与账户个体有关,称为实例属性。interestRate属性与个体无关,或者说是所有账户个体共享的,这种属性称为静态属性或类型属性。 面向对象类型(结构体、枚举和类)都可以定义静态属性,它们的语法格式分别如下所示: 1 <span style= "font-size:14px;" >struct结构体名{ //定义结构体,结构体中可以定义静态存储属性和静态计算属性<br>staticvar(或let)存储属性="xxx"<br>...<br>staticvar计算属性名:属性数据类型{<br>get{<br>return计算后属性值<br>}<br>set(新属性值){<br>...<br>}<br>}<br>}<br></span> enum枚举名{//定义枚举,枚举中不可以定义实例存储属性,但可以定义静态存储属性,也可以定义静态计算属性 1 <span style= "font-size:14px;" > static var(或let)存储属性= "xxx" <br>...<br> static var计算属性名:属性数据类型{<br>get{<br> return 计算后属性值<br>}<br>set(新属性值){<br>...<br>}<br>}<br>}<br><br> class 类名{ //定义类,类中不仅可以定义实例存储属性,还可以定义静态存储属性<br>staticvar(或let)存储属性="xxx"<br>...<br>class(或static)var计算属性名:属性数据类型{<br>get{<br>return计算后属性值<br>}<br>set(新属性值){<br>...<br>}<br>}<br>}<br>结构体静态计算属性也可以是只读的,语法如下:<br>staticvar计算属性名:属性数据类型{<br>return计算后属性值<br>}<br></span> 看一个Account结构体静态属性示例: 1 <span style= "font-size:14px;" >structAccount{ //定义Account结构体<br><br>varamount:Double=0.0//账户金额<br>varowner:String=""//账户名<br><br>staticvarinterestRate:Double=0.0668//定义静态存储属性interestRate利率<br><br>staticvarstaticProp:Double{//定义静态计算属性staticProp<br>returninterestRate*1_000_000<br>}<br><br>varinstanceProp:Double{//定义实例计算属性instanceProp<br>returnAccount.interestRate*amount<br>}<br>}<br><br>//访问静态属性<br>print(Account.staticProp)<br><br>varmyAccount=Account()<br>//访问实例属性<br>myAccount.amount=1_000_000<br>//访问静态属性<br>print(myAccount.instanceProp<br></span> ) 本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1746605,如需转载请自行联系原作者

优秀的个人博客,低调大师

《从零开始学Swift》学习笔记(Day 8)——小小常量、变量大作用

计算机语言学习中都有常量和变量,他们几乎是我编写代码的灵魂了,离开他们我真的是“活不了” 常量是标识符的前面加上关键字let。常量其值在使用过程中不会发生变化的量,下面是声明常量: let_Hello = "Hello" 注意哦常量只能在初始化的时候被赋值,如果再次给_Hello赋值, 比如:_Hello = "Hello, World" 程序会报错的 变量来了 变量是在标识符的前面加上关键字var,声明变量啦: var scoreForStudent = 0.0 声明Double类型scoreForStudent变量,并且初始化为0.0。 如果在一个语句中声明和初始化了多个变量,那么所有的变量都具有相同的数据类型: var x = 10, y = 20 在多个变量的声明中,也能指定不同的数据类型哦: var x = 10, y = true 其中x为整型,y为布尔型。 本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1746081,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册