4-类和结构体和可选类型
import UIKit
var str = “Hello, playground”
// 1 枚举语法
// 与 C 和 Objective-C 不同,Swift 的枚举成员在被创建时不会被赋予一个默认的整型值
// 书写方式一
enum sizeType{
case small
case middle
case large
}
// 书写方式二
enum sizeNumber
{
case x, xl ,xxl
}
// 直接进行调用
sizeNumber.x
// 2 类和结构体
// 通过关键字class和struct来分别表示类和结构体,并在一对大括号中定义它们的具体内容
class Stuff
{
var name:String = “”;// 姓名
var age:UInt = 0;// 年龄
var department:Department? // 所在部门
// 在这里定义
}
struct Department
{
// 在这里定义结构体
var name:String = “”;// 部门名称
var no:String = “”;// 部门的编号
}
// 结构体和类在构造过程中会调用一个构造器
// 3 引用类型的比较
var s_a = Stuff();
s_a.name = “alex”;
var s_b = Stuff();
s_b.name = “tom”;
var s_c:Stuff = s_a;
// === 用于比较两个引用是否为一个示例
if s_a === s_b {
print(“stuff a===b”);
}else{
print(“not equal”);
}
// 如果是引用同一个示例 就会报相等
if s_a === s_c {
print(“stuff a===c”);
}
// 结构体是属于值类型的 不能用于=== 进行比较
// 4 类型嵌套
// 比如说在类中嵌套结构体 枚举类型
class Closes {
var color:String = “”;// 默认
var price:Double = 0;// 默认
var size:sizeType = .small; // 默认
// 嵌套枚举类型
enum sizeType {
case small,middl,large
}
//
}
var c = Closes();
c.price = 20.0;
c.size = .middl;
print(c.size);
// 5 可选类型
// 使用一个变量的时候,这个变量可能有值也可能没有值,在此类型后面加上?表示可选类型
// 下面函数的返回结果就是可选类型 如果B为0 则不能被除
func devide (a:Int,b:Int)->Double?{
if b==0 {
return nil;
}
return Double(a)/Double(b);
}
// 可选绑定
// 可选类型可以用于判断是否有值进行绑定
if let res: Double? = devide(a: 5, b: 5){
//
print(“赋值成功”)
}else{
print(“赋值失败”)
}
// 强制拆封 确定可选类型有值的话 在读取的时候 使用!取值 就是强制拆封
let res2:Double? = devide(a: 5, b: 2);
print(res2!);
// 隐式拆封
// 为了方便的访问可选类型 直接将可选类型后面添加!称之为隐式拆封
let res3:Double! = devide(a: 50, b: 10);
print(res3);
// 可选链
class Employee{
var name:String = “Tom”;
var depart:Depart?;
}
class Depart{
var name:String = “IT”;
var company:Company?;
}
class Company{
var name:String = “trade”;
}
var e = Employee();
// ? 表示引用的时候 某一个环节只要出现一个nil 则把nil 返回给引用者
// e.depart?.company?.name; 这种?的引用方式就是可选链 是一种温柔的访问方式
相关文章:

android处理url中的特殊字符
java处理url中的特殊字符(如&,%...) URL(Uniform Resoure Locator,统一资源定位器)是Internet中对资源进行统一定位和管理的标志。 一个完整的URL包括如下内容: 应用协议名称,包括http,ftp,file等标志 资源定位…

图的连通性和连通分量_英语,人口,连通性和露营地
图的连通性和连通分量by Evaristo Caraballo通过Evaristo Caraballo 英语,人口,连通性和露营地 (English, Population, Connectivity and Campsites) 在世界范围内推动使用Free Code Camp的因素 (Factors driving the use of Free Code Camp worldwide)…

jQuery源码分析系列:属性操作
属性操作 1.6.1相对1.5.x最大的改进,莫过于对属性.attr()的重写了。在1.6.1中,将.attr()一分为二: .attr()、.prop(),这是一个令人困惑的变更,也是一个破坏性的升级,会直接影响到无数的网站和项目升级到1.6…

HDU 5972 Regular Number(ShiftAnd+读入优化)
【题目链接】 http://acm.hdu.edu.cn/showproblem.php?pid5972 【题目大意】 给出一个字符串,找出其中所有的符合特定模式的子串位置,符合特定模式是指,该子串的长度为n,并且第i个字符需要在给定的字符集合Si中 【题解】 利用Sh…

把握机缘_机缘巧合,蒙太奇训练以及我的朋友如何使自己失业
把握机缘by Wiley Jones通过威利琼斯 机缘巧合,蒙太奇训练以及我的朋友如何使自己失业 (Serendipity, training montages, and how my friend automated himself out of a job) “No one person’s Hollywood success story has anything in common with anybody e…

Servlet(一)
BS架构的优势 1.数据库之负责数据库的管理 2.Web服务器负责业务逻辑的处理 3.浏览器提供操作界面 4.不需要单独安装客户端 5.开发相对于CS简单,客户端和服务器的通信模块都是使用标准的HTTP协议进行通信 CS架构 1.数据库作为Server,使用数据库特定的编程语言编写业务…

visual webgui theme designer
转载于:https://www.cnblogs.com/jintan/p/3804095.html

51单片机编码自学_这是9个月的自学式编码看起来像什么
51单片机编码自学by Stephen Mayeux斯蒂芬马约(Stephen Mayeux) 这是9个月的自学式编码看起来像什么 (Here’s What 9 Months of Self-Taught Coding Looks Like) 只是划伤表面 (Just Scratching the Surface) Today marks 9 months since I embarked on my journey as a self…

19.Remove Nth Node From End of List
方法1:由于链表不能随机访问,所以很自然的想法是第一遍得到链表长度,然后计算倒数第n个结点的位置,但这样时间复杂度O(n2),想到用空间换取时间,可以用一个地址数组存储每个结点的地址,然后直接删…

HTML 5中SEO可以用那些代码来做优化
头部代码 1、标题标签(title标签) 在HTML5中标题标签依然存在,其仍然具有不可替代的作用;不过我们看到还有更多的可供搜索引擎识别的代码,我们将改代码的等级微降。 2、元标签(meta标签) 字符集编码声明标签 该标签原本就是搜索引擎必看且首先要看的标签…

XCode 导入头文件不提示解决
File --> WorkSpace Settings ---> Build Sysytem ---> Legacy Build System

构建node.js基础镜像_在Android上构建Node.js应用程序
构建node.js基础镜像by Aurlien Giraud通过AurlienGiraud 在Android上构建Node.js应用程序-第1部分:Termux,Vim和Node.js (Building a Node.js application on Android - Part 1: Termux, Vim and Node.js) If you are excited about Node.js and own a…

MyEclipse设置默认的文档注释和背景色设置
转载于:https://www.cnblogs.com/999-/p/6086219.html
C语言之数组中你所不在意的重要知识
#include<stdio.h>void simpleArray();void main() {simpleArray();}//数组的简单操作 void simpleArray() {//数组的声明并赋值int c[5] { 1, 2, 3, 4, 5 };printf("\nC数组内存中占%d个字节",sizeof(c));// /0在内存中会占一个字节,可是仅仅针…

swift 4.0 创建tableview 自定义cell
// // ViewController.swift // AlamofileDemo // // Created by Alex on 2019/3/5. // Copyright © 2019 AlexanderYeah. All rights reserved. //import UIKit import Alamofire// 遵守协议方法 class ViewController: UIViewController,UITableViewDataSource,UITa…

ux体验网站 英国_?? 用户体验(UX)资源和工具的完整列表??
ux体验网站 英国by Jason Hreha杰森赫雷哈(Jason Hreha) ?? 用户体验(UX)资源和工具的完整列表?? (?? The Complete List of User Experience (UX) Resources & Tools ??) 超过100个链接,可以链接到最好的书籍,课程,新闻通讯和工…

Android 第三方图表类 MPChart 的使用
先看看条形图的的效果还不错是吧,实现这样的效果很合适呢! 还有折线图、饼图很多效果 效果不错对吧~ 下面我们就先来看看条形图的实现方法吧! 第一步: 引入第三方包 MPChart 如果你碰巧看过我之前写的Recycleview的博客这就简单多…

C++ STL的sort 函数 以及自定义的比较函数
没什么特别擅长的内容,先做个小笔记好了。在编程时,使用C的标准模板库(STL)能节约工作量,增加代码的可读性,能灵活运用无疑会提高编程的效率,俗话说:Write less, create more ~ 然后…

7-构造器方法
import UIKit// 1 构造器 // 结构体和类在实例的构造过程中会调用一种特殊的方法init,称之为构造器 // 构造器的主要作用是初始化存储属性 // 如果存储属性在构造器中没有初始化 在定义的时候也没有初始化 就会产生编译错误class Employee{let no:Int;var name:Stri…

模糊推理 控制 易于实现_代码“易于推理”是什么意思?
模糊推理 控制 易于实现by Preethi Kasireddy通过Preethi Kasireddy 代码“易于推理”是什么意思? (What does it mean when code is “easy to reason about”?) You’ve probably heard the expression “easy to reason about” enough times to make your ear…
简单介绍一下R中的几种统计分布及常用模型
统计学上分布有很多,在R中基本都有描述。因能力有限,我们就挑选几个常用的、比较重要的简单介绍一下每种分布的定义,公式,以及在R中的展示。 统计分布每一种分布有四个函数:d――density(密度函…

leetcode题解:Construct Binary Tree from Preorder and Inorder Traversal (根据前序和中序遍历构造二叉树)...
题目: Given preorder and inorder traversal of a tree, construct the binary tree. Note:You may assume that duplicates do not exist in the tree. 说明: 1)二叉树可空 2)思路:a、根据前序遍历的特点, 知前序序列…

swift string,Int,Double相互转换
import UIKitvar str "Hello, playground" // 1 字符串转Int Double Float var str1 "818"; // 转Int var val1 Int(str1); // 转Double var val2 Double(str1); // 转float var val3 Float(str1);// 如果是25.0 转 Int,则需要先转为Doubl…

classlist使用方法_如何通过使用HTML5的classList API在没有jQuery的情况下操作类
classlist使用方法by Ayo Isaiah通过Ayo Isaiah 如何通过使用HTML5的classList API在没有jQuery的情况下操作类 (How to manipulate classes without jQuery by using HTML5s classList API) As a front end developer, you often need to change CSS rules based on how a us…

键盘码 ascii码
ASCII码表 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 0 NUT 32 (space) 64 96 、 1 SOH 33 ! 65 A 97 a 2 STX 34 ” 66 B 98 b 3 ETX 35 # 67 C 99 c 4 EOT 36 $ 68 D 100 d 5 ENQ 37 % 69 E 101 e 6 ACK 38 & 70 F 102 f 7 BEL …

Swift -布局框架SnapKit使用
SnapKit 1 安装 SnapKit github地址 2 文档地址 在线文档 // // ViewController.swift // SK_SnapKit // // Created by coder on 2019/3/6. // Copyright © 2019 AlexanderYeah. All rights reserved. //import UIKit import SnapKitclass ViewController: UIVie…

Hadoop概念学习系列之为什么hadoop/spark执行作业时,输出路径必须要不存在?(三十九)...
很多人只会,但没深入体会和想为什么要这样? 拿Hadoop来说,当然,spark也一样的道理。 输出路径由Hadoop自己创建,实际的结果文件遵守part-nnnn的约定。 如何指定一个已有目录作为Hadoop作业的输出路径,作业将…

已知环境静态障碍物避障_我女儿如何教我无障碍环境
已知环境静态障碍物避障by Drew通过德鲁 我女儿如何教我无障碍环境 (How my daughter taught me about accessibility) 在过去的几个月里,花了很多时间学习编程知识,这真是令人大开眼界。 面对似乎无穷无尽的技术和概念(即使是最简单的事物),…

IIS 部署 node.js ---- 基础安装部署
一些可能有用的相关文章: https://blogs.msdn.microsoft.com/scott_hanselman/2011/11/28/window-iisnode-js/ http://blog.csdn.net/puncha/article/details/9047311 20161123,这几天看了一些相关文章,觉得说的不太清楚,记录一下…

Qt中的 Size Hints 和 Size Policies
sizeHint 这个属性所保存的 QSize 类型的值是一个被推荐给窗口或其它组件(为了方便下面统称为widget)的尺寸,也就是说一个 widget 该有多大,它的一个参考来源就是这个 sizeHint 属性的值,而这个值由 sizeHint() 函数来…