当前位置: 首页 > news >正文

Swift学习笔记13-可选链

// // main.swift // class13 // // Created by sakiko on 2026/3/30. // import Foundation print("Hello, World!") //可选链:一个可选项,可以不要拆包就不要拆包(其实这课不是很懂。。。) //作用:可以避免强行解包可选值时可能导致的运行时错误(如 Optional 的解包错误)。如果链中的任何部分为 nil,整个表达式会安全返回 nil。 /* 介绍: 如果可选项欸nil,调用方法、下标、属性失败,结果最后为nil 如果可选项不为nil,调用方法、下标、属性成功,结果会被包装成可选项 如果结果本来就是可选项,则不会进行再次包装 */ class Car { var price = 0 } class Dog { var weight = 0 } class Person { var name: String = "" var dog: Dog = Dog() var car: Car? = Car() func age() -> Int{ 18 } func eat() { print("Person eat") } subscript(index: Int) -> Int { index } } var person: Person? = Person() //在以下的这些调用里,如果person为nil后面的就不会运行,直接返回nil var age1 = person!.age() var age2 = person?.age() var name = person?.name var index = person?[6] print(age1, age2, name, index) /* 18 Optional(18) Optional("") Optional(6) */ if let _ = person?.eat() { print("eat调用成功") } else { print("eat调用失败") } var dog = person?.dog var weight = person?.dog.weight var price = person?.car?.price print(dog, weight, price) //Optional(class13.Dog) Optional(0) Optional(0) //可选链2 var scores = ["Jack": [86, 82, 84],"Rose": [79, 94, 81]] scores["Jack"]?[0] = 100 //修改字典jack中的第一个分数 scores["Rose"]?[2] += 10 //修改字典 //scores["Kar"]?[0] = 88 //修改字典但是没有kate var num1: Int? = 5 num1? = 10 print(num1)//Optional(10) print(num1!) //10 var num2: Int? = nil num2? = 10 print(num2) //nil var dict: [String : (Int, Int) -> Int] = [ "sum" : (+), "differ" : (-) ] var result = dict["sum"]?(10, 20) print(result)//Optional(30)
http://www.jsqmd.com/news/579129/

相关文章:

  • 从手动挡到自动驾驶:Infoseek如何用工程思维重构媒体发布
  • OpenClaw镜像体验报告:千问3.5-35B-A3B-FP8多模态任务云端实测
  • 状态机中的人物状态
  • 50万行代码泄露后,开发者们凌晨4点冲进Rust:这次真的撕开了
  • OpenClaw备份与迁移:Qwen2.5-VL-7B配置快速转移指南
  • 2026年最吃香的IT岗!AI大模型应用开发,普通人如何逆袭百万年薪?
  • 工业冷水机控制程序西门子1200plc含压缩机,电子膨胀阀控制策略,饱和温度计算公式
  • PCB Layout设计核心要点与工程实践
  • 智能家庭教育:OpenClaw+Phi-3-vision-128k-instruct批改孩子手写作业
  • 如何评估 SEO 平台优化服务的效果
  • jfinal_cms-v5.1.0 白盒 nday CVE-2024-53477实验
  • OpenClaw内存优化指南:在8GB设备运行Qwen3.5-9B-AWQ-4bit
  • Claude Code 源码研究【第二弹】:智能体框架与大模型相互成就
  • 构建编译环境
  • 基于机器学习算法的亚马逊用户评论情感分析研究:深入探讨随机森林与决策树模型的应用及其实验评估
  • 为什么你的Protobuf解析比gRPC官方慢3.2倍?7个JVM参数+2个序列化策略的硬核调优清单
  • 零基础玩转OpenClaw:Qwen3.5-9B镜像10分钟体验报告
  • 怎么选购监控?
  • 代码分享】“基因集单通路的泛癌GSEA富集分析
  • AI 生码:RAG 落地量化实践与体系搭建
  • 【HFP】规范精讲[17]: HFP链路控制:LM/LC交互与设备类型适配逻辑
  • 如何基于OpenAI进行Function Calling调用
  • 小红书内容保存难题,这款Python工具如何实现一键无水印下载?
  • SEO_ 从零开始学习SEO的完整步骤与实战案例
  • 【急诊科影像秒级加载黑科技】:基于C++20协程与CUDA Unified Memory的实时渲染框架设计(附GitHub可运行代码)
  • OpenClaw配置文件详解:Qwen3.5-9B高级参数调优手册
  • 仅用200行代码重构内存管理模块:某AI平台将GPU服务器月成本压至$1,840的独家策略(限时开源)
  • OpenClaw压力测试:千问3.5-9B持续运行24小时稳定性
  • 飞机喷涂废气治理厂家丨一场看不见的“废气治理战”如何打响?
  • 从YAML配置文件入手,5分钟搞懂如何定制你的YOLOv5s/m/l/x模型