2016-09-03 18:00:19 yangyi2083334 阅读数 689
  • 2019Java微服务架构2.0

    全网最新《微服务架构2.0》课程旨在推动并普及微服务架构思想,技术选型紧跟阿里系开源生态方案及服务网格等技术,规范微服务开发流程,让您真正体会互联网微服务开发的独特魅力。 本视频教程为之前《微服务解决复杂问题》的升级版本,主要升级亮点为:优化了课程学习顺序、升级了依赖版本号、摒弃了一些过时的技术、增加 Kubernetes + Istio 服务网格相关技术、完整的项目管理流程、完善的编程方法论(敏捷开发、十二要素应用、无状态应用等)及完整的项目案例。

    6245 人正在学习 去看看 千锋

swift 4.1 可选型optional

标签(空格分隔): swift


可选型 optional ,表示一个值可能为空。但是这个空,在swift中就叫可选型,用关键字nil表示。它既不是0,也不是不存在,它就是nil

要么是它自身的值,要么为nil。nil就是可选型的默认值

简单记录下,就不展开的说了。

0. 申明一个可选项

用: 字符类型+? 必须显示的申明

var errorCode:Int? = 404
var errorMessage:String? = "Not Found!"

errorCode = nil

print( errorMessage )  // 输出:Optional("Not Found!")

1. 不能隐示的申明

//var errorCode1? = 404 //报错,必须声明类型

var errorCode2:Int? = 404 //得像这样,显示的申明一个类型

// Int? 和 Int 不是一种类型
let imInt = 405 //Int 型
errorCode = imInt
print(errorCode)  //Optional(405)

//imInt = errorCode //报错了,把一个可选型赋值给一个Int型,报错。

2. 可选型的解包。

解包就是我得使用它了。确认强制解包用:!

var errorCode3:String? = "404"

//"the errorcode is " + errorCode3 // 报错:2种不同的类型不能直接拼装使用。

//如果需要使用,就得解包。用强制解包:!
"the errorcode is " + errorCode3! // 打印:the errorcode is 404

//用强制解包,是很危险的,如果这个值真的为 nil。然后强制解包,就会报错。

var errorCode4:String? = nil
//"the errorcode is " + errorCode4! // 报错了:nil被强制解包报错。

3. 可以用if 判断可选型是否为nil,安全后再用!解包

var errorCode5:String? = "502"
if errorCode5 != nil {
    print(errorCode5!) //打印:502
} else {
    print("No error!")
}

4. if 联合使用 let 关键字解包,可以不用!了

if let unwrappedErrorCode = errorCode5{
    print(unwrappedErrorCode) //打印:502
} else {
    print("No error!")
}

//也可以用相同的名字:
if let errorCode5 = errorCode5{
    print(errorCode5) //打印:502
} else{
    print("No error!")
}

5. 使用 if let 解包多个可选型的值。相当于 and 操作

if let errorCode5 = errorCode5, errorMessage = errorMessage{
    print("code is \(errorCode5), msg is \(errorMessage)")
    //打印:code is 502, msg is Not Found!
}

6. 使用 if let 再加 where 进一步限定

if let errorCode5 = errorCode5, errorMessage = errorMessage where errorCode5 == "502"{
    print("code is \(errorCode5), msg is \(errorMessage)")
}
print(errorCode5) // 它自身的值并没有被改变:Optional("502")

7. Optional chaining 链式操作

//解包
var errorMessage2: String? = "Not Found"
if let errorMessage2 = errorMessage2{
    print(errorMessage2.uppercaseString) // "NOT FOUND" 全部大写了
}

//chaining操作就是可以直接用:

if let errorMessage2 = errorMessage2?.uppercaseString{
    print(errorMessage2) // "NOT FOUND" 全部大写了
}

//也可以直接用 !强制解包,前提是你确定一定不为nil。
let upperMessage2 = errorMessage2!.uppercaseString //"NOT FOUND" 全部大写了

8. 使用 ?? 解包。更加单的三目运算符


let message2 = errorMessage == nil ? "No error" : errorMessage!

//等价。如果 errorMessage 解包成功,就把解包解包的值给 message3
let message3 = errorMessage ?? "No error" // "Not Found!"

9 .在元祖里面使用可选型

//errorMessage 设置为可选
var error1:(errorCode:Int, errorMsg:String?) = (404, "Not found!")

error1.errorMsg = nil //成功

print(error1) //打印:(404, nil)

//把整个元祖设置为可选
var error2:(errorCode:Int, errorMsg:String)? = (404, "Not Found!")

error2 = nil //成功的

print(error2) // 打印:nil

10 .隐士的申明

待续

2014-03-22 14:05:56 ht3allen 阅读数 1710
  • 2019Java微服务架构2.0

    全网最新《微服务架构2.0》课程旨在推动并普及微服务架构思想,技术选型紧跟阿里系开源生态方案及服务网格等技术,规范微服务开发流程,让您真正体会互联网微服务开发的独特魅力。 本视频教程为之前《微服务解决复杂问题》的升级版本,主要升级亮点为:优化了课程学习顺序、升级了依赖版本号、摒弃了一些过时的技术、增加 Kubernetes + Istio 服务网格相关技术、完整的项目管理流程、完善的编程方法论(敏捷开发、十二要素应用、无状态应用等)及完整的项目案例。

    6245 人正在学习 去看看 千锋

蓝牙4.0最重要的特性是低功耗,极低的运行和待机功耗可以使一粒纽扣电池连续工作数年之久。此外,还有低成本和跨厂商的互操作性,3ms低延迟、100米以上超长距离、AES-128加密等诸多特色。正是这些特色,让蓝牙技

术的应用迎来了一个爆发点。目前,蓝牙技术出原有的手机、平板电脑等消费类应用外,还扩展到智能家居、智能运动、智能保健、智能护理等领域,可以说,蓝牙技术瞄准的是物联网和智慧地球这个未来,加之其特有的跳

频技术,在2.4GHz这一频段,其市场空间可谓巨大。

随着蓝牙应用的越来越广,就会遇到越来越多的选型问题,在这里介绍一下NORDIC蓝牙4.0芯片nRF51822,为大家选型提供一个参考。
芯片配置:
工作电压:3.3V
处理器  :ARM Cortex-M0 32位内核
存储器  :256K Flash
           16K RAM
封装    :QFN48
尺寸    :6x6mm
蓝牙    :4.0
其他资源:31个通用IO口,任意引脚有触发中断功能
   16 个PPI通道
   管脚顺序可任意编程
   片上+/- 250 ppm 32.768kHZ RC 振荡器,   在蓝牙低功耗应用,不需外部 32.768kHz 晶体
   8/9/10位ADC   8通道
          2个16位定时器或者一个32位定时器
   1个SPI主设备
   1个IIC接口
   1个UART接口
   片上温度传感器
   RNG(随机数生成器)
   正交解码器
   AES加密
   RTC
   场强RSSI
优点:
1,32位ARM-M0内核,256K(Flash)+16K(RAM),片上资源丰富,开发环境使用keil,具有运算速度快,程序空间大,不需外扩flash,体积小,功耗低,开发资源方便等优点。
2,当在DC-DC3V模式,输出+4dBm功率时,工作电流仅为10.5mA.。这个是业界最低,非常适合3V 纽扣电池供电的应用。
3,具备PPI(Programmable Peripheral Interconnect)功能。
4,所有的数字IO引脚都是可以自由定义和映射的,大大方便硬件设计和软件测试。
5,蓝牙协议栈与应用程序空间独立,使得开发人员不需要了解蓝牙协议,只需调用API。
6,内嵌32.768晶振,完全符合蓝牙需求,减少成本和PCB面积。
7,由于蓝牙协议栈与应用程序空间独立,所以空中升级不用担心失败,设备可一直正常使用。
8,蓝牙协议和应用代码是相互独立的,且蓝牙协议已通过了认证
综合以上优点,nRF51822可以实现使用很少的外围元器件,极小的布板面积,极低的开发时间和测试成本,超低功耗,但是具有超强性能,超高性价比的蓝牙4.0完美解决方案。

深圳市迅通科技有限公司
北京分公司
联系人:张先生
电话  :010-64390487
手机  : 13269488996
QQ    : 2530250097
本公司为NORDIC亚太区总代理,专供蓝牙4.0芯片nRF51822、nRF51822模块、nRF51822开发板以及开发方案和技术支持。
具有供货期短,供货稳定,价格低廉等优势。

2018-06-21 16:00:59 SHTLoveXX 阅读数 98
  • 2019Java微服务架构2.0

    全网最新《微服务架构2.0》课程旨在推动并普及微服务架构思想,技术选型紧跟阿里系开源生态方案及服务网格等技术,规范微服务开发流程,让您真正体会互联网微服务开发的独特魅力。 本视频教程为之前《微服务解决复杂问题》的升级版本,主要升级亮点为:优化了课程学习顺序、升级了依赖版本号、摒弃了一些过时的技术、增加 Kubernetes + Istio 服务网格相关技术、完整的项目管理流程、完善的编程方法论(敏捷开发、十二要素应用、无状态应用等)及完整的项目案例。

    6245 人正在学习 去看看 千锋

Swift4 学习之路,从入门语法   →进阶  →设计模式  →UIKit   →高级  →实战主目录:点击这里

1.2.1 可选型

      swift中一种独有的数据类型,OC中没有。主要用于某些不确定是否有值得情况.

       1. 定义可选类型只需要在常规类型后边加“?”即可。 它有两个返回值分别是具体值和nil

       2.可选型初始值为nil

       3. 可选型使用具体数值的时候需要解包


2018-02-25 12:59:23 attilax 阅读数 192
  • 2019Java微服务架构2.0

    全网最新《微服务架构2.0》课程旨在推动并普及微服务架构思想,技术选型紧跟阿里系开源生态方案及服务网格等技术,规范微服务开发流程,让您真正体会互联网微服务开发的独特魅力。 本视频教程为之前《微服务解决复杂问题》的升级版本,主要升级亮点为:优化了课程学习顺序、升级了依赖版本号、摒弃了一些过时的技术、增加 Kubernetes + Istio 服务网格相关技术、完整的项目管理流程、完善的编程方法论(敏捷开发、十二要素应用、无状态应用等)及完整的项目案例。

    6245 人正在学习 去看看 千锋

atitit 技术选型之道. attilax著 艾龙著

 

1. 标准 2

1.1. 符合趋势度 2

1.2. 简单易用 2

1.3. 文档丰富度 2

1.4. 下载便利性 2

1.5. 性能 2

1.6. 体积 2

2. 选型一个范围,不要只选一个 2

3. 多语言组合,提升效率 2

3.1. 脚本语言块,vm语言功能强大 2

4. 高中低三挡原则 梯队化建设 2

4.1. 选型分档次 原则上最起码三个选择 高中低三挡 2

4.2. 方便某些功能替换 bug替补 2

4.3. 方便高中低人员搭配 根据自己水平选用不同的类库框架 2

5. 参考资料 3

 

1. 标准

1.1. 符合趋势度

1.2. 简单易用

1.3. 文档丰富度

1.4. 下载便利性

1.5. 性能

1.6. 体积

2. 选型一个范围,不要只选一个

3. 多语言组合,提升效率

3.1. 脚本语言块,vm语言功能强大

4. 高中低三挡原则 梯队化建设

4.1. 选型分档次 原则上最起码三个选择 高中低三挡

4.2. 方便某些功能替换 bug替补

4.3. 方便高中低人员搭配 根据自己水平选用不同的类库框架

高手不至于因为技术太low而不愿采用,新手不至于难度太大拖进度

 

比如orm dbutil mybatis hibernate三挡  ,方便不同人员搭配

 

5. 参考资料

Atiit.报表架构与技术选型.docx

Atiit.报表架构与技术选型.docx.txt

Atitit 如何技术选型 类库选型 编程语言选型 .docx

Atitit 开发游戏的技术选型attilax总结.docx

Atitit 开发游戏的技术选型attilax总结.docx.txt

atitit 技术选型之道.docx

atitit 技术选型之道.docx.lnk

Atitit 技术选型重要原则开放性原则.docx

atitit 现在的常用gui技术与gui技术趋势评价总结 gui技术选型 v2 qa25.docx

atitit 现在的常用gui技术与gui技术趋势评价总结 gui技术选型 v2 qa25.docx.txt

atitit.erp系统的技术选型与语言选型.doc

atitit.erp系统的技术选型与语言选型.doc.txt

Atitit.如何选择技术选型 以及职业方向.docx

Atitit.如何选择技术选型 以及职业方向.docx.txt

atitit.技术选型方法总结.txt

atitit.技术选型方法总结.txt.lnk

Atitti 触动精灵企业后台检测技术选型结果说明.docx

Atitti 触动精灵企业后台检测技术选型结果说明.docx.txt

techslt.txt

 

2019-04-18 19:53:21 attilax 阅读数 38
  • 2019Java微服务架构2.0

    全网最新《微服务架构2.0》课程旨在推动并普及微服务架构思想,技术选型紧跟阿里系开源生态方案及服务网格等技术,规范微服务开发流程,让您真正体会互联网微服务开发的独特魅力。 本视频教程为之前《微服务解决复杂问题》的升级版本,主要升级亮点为:优化了课程学习顺序、升级了依赖版本号、摒弃了一些过时的技术、增加 Kubernetes + Istio 服务网格相关技术、完整的项目管理流程、完善的编程方法论(敏捷开发、十二要素应用、无状态应用等)及完整的项目案例。

    6245 人正在学习 去看看 千锋

Atitit 开发效率的提升艺术 艾提拉著

 

目录

1. 主要几个层次上简化开发 2

1.1. 管理创新 2

1.2. 开发体系方法使用简单方法 2

1.3. 技术选型使用简单框架模式 2

1.4. 测试使用简单模式, 2

1.5. 部署使用简单 2

1.6. 避免过度设计 2

2. 目标方法 3

2.1. 免编译   免打包 3

3. 管理上创新 3

3.1. 优化人员搭配 梯队化 3

3.2. 每天团队开会半小时提升效率建议 问题采集 3

3.3. 培训体系 3

3.4. 大公司的方法 技术  框架往往不适合中小公司 3

4. 制度层面 3

4.1. 提倡规范法效率提升最佳实践法 3

4.2. 知识库体系 3

4.3. 重大问题避免法 3

5. 开发体系方法的改进 3

5.1. 简化层次,双层法 4

5.2. 简化项目依赖,减少层次。。。 4

5.3. 使用现有模块组合 ,拆分到微功能 4

5.4. 预开发微功能,大力提升基础建设水平  工作流 规则引擎 4

5.5. 可读性优先于性能 4

6. 技术选型使用简单框架模式 4

6.1. Diy类库建设,效率优先模式 4

6.2. 去中间件 去cache简化 4

6.3. 语言php脚本看看适当引用 4

6.4. 多种存储模式 mongdb等 文件 excel等 Mongodb取代mysql 4

6.5. 大力减少class 4

6.6. 避免俄罗斯套娃模式 4

6.7. Dsl script化(h5 工作流规则引擎 sql ) 4

6.8. 项目结构井字模块化,先已功能模块化,然后分层模块化,或不分层 5

7. 测试服务器使用win 5

8. 部署适当使用同步法 5

8.1. War打包法 5

8.2. Resin热部署法 5

9. 内部积累与标准化 5

9.1. Atiit 常见功能 常用功能与模块的最快速解决方案原子功能库微功能 v5 t33 .docx 5

10. Ref 5

 

  1. 主要几个层次上简化开发
    1. 管理创新
    2. 开发体系方法使用简单方法
    3. 技术选型使用简单框架模式
    4. 测试使用简单模式,
    5. 部署使用简单
    6. 避免过度设计

 

 

  1. 目标方法
    1. 免编译   免打包 
  2. 管理上创新
    1. 优化人员搭配 梯队化
    2. 每天团队开会半小时提升效率建议 问题采集
    3. 培训体系
    4. 大公司的方法 技术  框架往往不适合中小公司

严谨但是复杂开发效率低,大公司的技术往往侧重于性能优先,小公司开发效率优先

  1. 制度层面
    1. 提倡规范法效率提升最佳实践法
    2. 知识库体系
    3. 重大问题避免法
  2. 开发体系方法的改进

 

    1. 简化层次,双层法
    2. 简化项目依赖,减少层次。。。
    3. 使用现有模块组合 ,拆分到微功能
    4. 预开发微功能,大力提升基础建设水平  工作流 规则引擎
    5. 可读性优先于性能
  1. 技术选型使用简单框架模式
    1. Diy类库建设,效率优先模式
    2. 去中间件 去cache简化
    3. 语言php脚本看看适当引用
    4. 多种存储模式 mongdb等 文件 excel等 Mongodb取代mysql
    5. 大力减少class
    6. 避免俄罗斯套娃模式
    7. Dsl script化(h5 工作流规则引擎 sql )

可以使用db ,excel,文件,sciprt等建立工作流规则引擎

    1. 项目结构井字模块化,先已功能模块化,然后分层模块化,或不分层
  1. 测试服务器使用win
  2. 部署适当使用同步法
    1. War打包法
    2. Resin热部署法

 

 

  1. 内部积累与标准化
    1. Atiit 常见功能 常用功能与模块的最快速解决方案原子功能库微功能 v5 t33 .docx

 

 

 

  1. Ref

Atitit 提升开发效率法---开发方法架构简化法.docx

 

Atitit 效率提升之道 v2 s22.docx (主要是原则性比较多

Atitit 提升团队开发效率的一些流程attilax总结v2.docx

Atitit 提升团队开发效率与项目进度的一些大的流程方向attilax总结

 

Swift 可选型

阅读数 25

没有更多推荐了,返回首页