一、实验目的:

  1. 掌握Swift编程方法。
  2. 掌握Swift数据类型。

二、实验原理:

  1. playground的界面与使用方法。
  2. 常量与变量的定义方法。
    3.常量与变量的类型声明方法。

三、实验步骤及内容:

1. 常量与变量

// 常量的定义
let lengthOfTelephoneNumber = 8
let lengthOfIdentityCardNumber = 18
let lengthOfZipNumber = 6
//变量的定义
var totalVisits = 2000000
var numberOfMembers = 10000
var currentSpeed = 120
//常量,变量命名
var a_b = “a and b”
var aPerson = “one person”
let hello = “say hello”
let mul = “multiply operator”
var numOfApple = 88
//可读性强的命名
var numberOfStudents = 68
var idCardNumber = “320602201612120652”
let pi = 3.141516
//可读性弱的命名
var a = 68
var b = “320602201612120652”
let c = 3.141516
//类型声明
let name : String = ““
var age : Int = 0
//定义变量
var a_b = “a and b”
var aPerson = “one person”
var hello = “say hello”
//分配变量值
hello = “say hi”
a_b = “c and d”
//输出
print(a_b)
print(hello)
print(“The value of variable a_b is \(a_b)”)
print(aPerson)
//分隔符
var a_b = “a and b”, aPerson = “one person”, hello = “say hello”
let thisYear = “2022”
let myOrganisation = “QingChuan”
let myhobby = “Reading”
//练习题1
/*the reference code for exercisechapter: constant and variableAuthor: Morre PaulOrganisation: QingChuanDate: 2021-8-9*/
//definition part
var radius : Double = 3.0
let pi : Double = 3.1415
var areaOfCircle : Double = pi * radius * radius
//output part
print(“radius = \(radius), pi = \(pi), so the area of circle is : \(areaOfCircle)”)


2. 整型和浮点型

let minValue = Int8.min
let maxOfInt8 = Int8.max
let maxOfInt16 = Int16.max
let maxOfInt32 = Int32.max
let maxOfInt64 = Int64.max
let num1:Int8 = -128
let num2:UInt16 = 65535
let num3: Int32 = -100_0000
//整型混合运算
let result = Int(num1) + Int(num2) + Int(num3)
//32位
let fNum1: Float = 3.1415
//64位
let dNum2: Double = 3.1415926
//浮点型混合元算
let sum = Double(fNum1) + dNum2
//越界赋值
let outBoundNum1 : UInt8 = -16
let outBoundNum2 : Int8 = 160
//越界运算
let outBoundNum1 : UInt8 = 16
let outBoundNum2 : Int8 = 120
let sum = Int8(outBoundNum1) + outBoundNum2
//练习题2
let maxOfInt32 = UInt32.max
let minOfUInt = UInt.min
let intNum: Int = 10000
let doubleNum: Double = -33.66
let sumInt = intNum + Int(doubleNum)
let sumDouble = Double(intNum) + doubleNum
let correctValue1 = 200
let correctValue2 : UInt8 = 200
//let correctValue3 : Int8 = 200
let value1 : Int16 = 20000
let value2 : Int8 = 10
//let multiResult = value1 * Int16(value2)
let multiResult = Int(value1) * Int(value2)

3. 浮点型

var daylight : Bool = true
var lightSwitch = false
if daylight {lightSwitch = falseprint(“It is daytime, so turn  light switch off!”)
} else {lightSwitch = trueprint(“It is night, please turn light switch on!”)
}
//练习题3
var isWeekend : Bool = false
if isWeekend {print(“Today may be Saturday or Sunday.”)
} else {print(“Today is not Saturday or Sunday.”)
}
var sunnyDay = true
if sunnyDay {print(“It's sunny.”)
} else {print(“It's rainy or cloudy.”)
}


4.元组

//定义元组
let http404Error = (404, “Not Found”)
//元组赋值
let (Code, Description) = http404Error
print(Code)
print(Description)
//访问元组
print(http404Error.0)
print(http404Error.1)
let http406Error = (Code: 406, Description: “Not Acceptable”)
print(http406Error.Code)
print(http406Error.Description)
let rectangle = (len:10 , width:5)
print(rectangle.0)
print(rectangle.width)
print(rectangle)
//练习题4
//定义元组
let studentInfo = (60115, “Liang Zhang”, true)
//访问元组方法1
let (idNum, name, mCCP) = studentInfo
print(“Student \(name)'s identification number is \(idNum)”)
if mCCP {print(“\(name) is a member of Chinese Communist Party”)
} else {print(“\(name) isn't a member of Chinese Communist Party”)
}
//访问元组方法2
print(“Student \(studentInfo.1)'s identification number is \(studentInfo.0)”)
if studentInfo.2 {print(“\(studentInfo.1) is a member of Chinese Communist Party”)
} else {print(“\(studentInfo.1) isn't a member of Chinese Communist Party”)
}
//访问元组方法3
let anotherStudentInfo = (idNum: 60115, name: “Liang Zhang”, mCCP: true)
print(“Student \(anotherStudentInfo.name)'s identification number is \(anotherStudentInfo.idNum)”)
if anotherStudentInfo.mCCP {print(“\(anotherStudentInfo.name) is a member of Chinese Communist Party”)
} else {print(“\(anotherStudentInfo.name) isn't a member of Chinese Communist Party”)
}
//定义元组
let studentInfo = (60115, “Liang Zhang”, true)
//访问元组方法1
let (idNum, name, mCCP) = studentInfo
print(“Student \(name)'s identification number is \(idNum)”)
if mCCP {print(“\(name) is a member of Chinese Communist Party”)
} else {print(“\(name) isn't a member of Chinese Communist Party”)
}
//访问元组方法2
print(“Student \(studentInfo.1)'s identification number is \(studentInfo.0)”)
if studentInfo.2 {print(“\(studentInfo.1) is a member of Chinese Communist Party”)
} else {print(“\(studentInfo.1) isn't a member of Chinese Communist Party”)
}
//访问元组方法3
let anotherStudentInfo = (idNum: 60115, name: “Liang Zhang”, mCCP: true)
print(“Student \(anotherStudentInfo.name)'s identification number is \(anotherStudentInfo.idNum)”)
if anotherStudentInfo.mCCP {print(“\(anotherStudentInfo.name) is a member of Chinese Communist Party”)
} else {print(“\(anotherStudentInfo.name) isn't a member of Chinese Communist Party”)
}


5.可选型

//Swift的空值
var studentInSwift: (name: String, idNumber: String, age: Int, reward: String?) = (“Jim”, “37060116”, 19, “Best Student”)
//case 2nd: Tom has no reward
studentInSwift = (“Tom”, “37060115”, 20, nil)
//定义可选类型
var reward: String?
reward = “Best Student”
var bonus: String = “default value”
//字符串拆包
bonus = reward!
//print(“\(bonus)”)
if reward != nil {bonus = reward!print(“\(bonus)”)
} else {print(“reward is nil”)
}
var reward: String?
//可选型绑定
if let reward = reward {print(“The optional's value is \(reward)”)
} else {print(“The optional is nil”)
}
var countsOfReward: Int?
countsOfReward = 9
//可选型绑定
if let countsOfReward = countsOfReward {print(“Counts of reward is \(countsOfReward)”)
} else {print(“There is no reward record”)
}
var reward: String?
var countsOfReward: Int?
reward = “Best Student”
countsOfReward = 9
//多个可选型绑定
if let reward = reward, let countsOfReward = countsOfReward, countsOfReward > 3 {print(“reward is \(reward), counts are \(countsOfReward)”)
} else {print(“no reward or no counts or counts<=3”)
}
// nil聚合运算
var reward: String?
var countsOfReward: Int?
reward = “Best Student”
countsOfReward = nil
var valueOfReward = reward ?? “No Reward”
var valueOfCounts = countsOfReward ?? 0
print(valueOfReward)
print(valueOfCounts)
//练习题5-1
var myHobby: String?
//I like playing soccer
myHobby = “playing soccer”
//I haven't any hobby
myHobby = nil
let parsedInt = Int(“10”)
//parse a string into a int
var parseStringToInt = Int(“10”)
parseStringToInt = Int(“Picasso”)
//练习题5-2
//student's information
var name: String = “Tommy”
var hobby: String?
//force unwrapping
if hobby != nil {print(“\(name)'s hobby is \(hobby!)”)
} else {print(“\(name) has no hobby”)
}
var membership: String?
membership = “IEEE senior member”
//optional binding
if let membership = membership {print(“\(name) is \(membership)”)
} else {print(“\(name) doesn't join any orgnization!”)
}
hobby = “soccer”
//multiple optional binding
if let hobby = hobby, let membership = membership {print(“\(name)'s hobby is \(hobby) and is also \(membership)”)
} else {print(“\(name) has no hobby or doesn't join any orgnization!”)
}
//nil coalescing
var getHobby = hobby ?? “No hobby”
var getMembership = membership ?? “No membership”
hobby = nil
membership = nil
getHobby = hobby ?? “No hobby”
getMembership = membership ?? “No membership”


四、实验结果与分析:

本次实验,主要学习了如何定义常量和变量,以及练习了swift常见数据类型的使用方法,以及如何用不同的方法定义、访问元组等等,在实验中,我主要会因为自己的粗心大意,方法使用不恰当导致运行结果出现误差,检查出错误后,基本所有的实验结果都可以正常运行出来。

五、实验总结:

Swift既是一门高级语言,又是一门低层级语言Swift可以使用map和reduce来很容易创建出自己的高级函数,Swift可以快速完成代码编写,并将他们直接编译为原生二进制可执行文件,这使得性能可以与C语言的编写的程序相媲美。Swift更令人赞叹的是,可以兼顾高低两个层级。将一个数组通过闭包表达式映射到另一个数组所编译得到的汇编码,与直接对一块连续内存进行循环所得到的结果是一致的。2. Swift是一门多范式语言可以使用 Swift来编写面向对象的代码,也可以使用不变量的值,来写纯函数程序。Swift 依然可以使用大部分Objective-C功能,包括消息发送,运行时的类型判定,以及KVO等。Swift还引入了很多Objective-C不具备的特性Swift 拥有泛型,协议,值类型以及闭包等特性,这些特性是函数式风格的很好介绍。
本次课程的学习,我主要学习了如何定义常量与变量、以及swift中常见的数据类型,让我对swift编程语言有了一个基本的认识。在罗老师的带领学习下,我越来越喜欢这IOS门课程,希望在以后的学习中,我可以越来越主动去学习了解更多的知识。本次实验,我主要的学习情况总结如下:
(1)swift 中常见的数据类型
Int 、Float、Double、Character、String
Array、Dictonary、元组类型(Tuple)、可选类型(Optional)
可以看出,数据类型的首字母都是大写的
(2)如何指定变量,常量的数据类型
在常量 变量名后面加上冒号(:)和类型名称
let age:Int = 10
上面代码表示:定义了一个Int类型的变量age 初始值是10
(3)一般来说,没有必要明确指定变量,常量的类型
如果在声明常量、变量时赋了初始值 Swift 以@L_673_5@推断出这个常量、变量的类型
let age = 20
//Swift 会推断出age是Int类型 因为20是个整数
(4)变量初始化
Swift严格要求变量在使用之前必须进行初始化 因为Swift是强类型,而且是类型安全的语言,两个类型不一样是不能相加的等等。

Swift学习笔记笔记(一)Swift编程步骤数据类型相关推荐

  1. Swift学习: 从Objective-C到Swift

    作者:@方秋枋(GitHub) 这篇文章是自己学习Swift的笔记与深化.希望这篇文章能够帮助已经有Objective-C经验的开发者更快地学习Swift.同时也品味到Swift的精妙之处. 结论放在 ...

  2. 【libevent】libevent库学习总结(二)——编程步骤

    一.libevent编程步骤 0.分配并初始化event_base,两种方法 0.1 event_base_new:线程安全,代替event_init: 0.2 event_init:线程不安全,不推 ...

  3. Swift学习Day01(Object_c 与Swift的相互调用 )

    为什么80%的码农都做不了架构师?>>>    从今天开始: 学习一门新门的语言Swift,之前常用的语言  java .object-c:相信 学起swift来,也会很快的: 之前 ...

  4. swift学习笔记《5》- 实用

    title: swift学习笔记<5>- 实用 date: 2016-09-21 21:39:00 categories: 学习笔记 Swift学习 tags: Swift 1.setVa ...

  5. 【swift学习笔记】二.页面转跳数据回传

    上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...

  6. Swift学习笔记(4)使用UIImagePickerController实现从设备图片库和照相机获取图片

    Swift学习笔记(4)使用UIImagePickerController实现从设备图片库和照相机获取图片 设备图片库和照相机是图像的两个重要来源,使用UIKit中提供的图像选择器UIImagePic ...

  7. Swift学习笔记 ——(一)

    前言 作为一个前端开发者,经常与javaacript(以下简称:js)打交道.最近想了解一下ios开发,前两天看了一下objective-c(以下简称:oc),相对于js来说还是有很多不同的,但是语言 ...

  8. 极客时间——Swift学习笔记

    ## Swift 编译过程 LLVM 百度百科LLVM 深入理解LLVM LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compil ...

  9. Swift学习笔记-协议(Protocols)

    1.0 翻译:geek5nan 校对:dabing1022 2.0 翻译:futantan 校对:小铁匠Linus 定稿:shanksyang 本页包含内容: 协议的语法(Protocol Synta ...

最新文章

  1. 爬虫自动登陆GitHub
  2. Baby Coins
  3. 编译ARM平台的 QtEmbedded 的MySQL插件和移植MySQL到ARM开发板
  4. Salsify:高流畅度的实时视频传输新方式
  5. linux7安装pgsql数据库,CentOS7下PostgreSQL安装
  6. 21天让你成为Horizon View高手—Day20:证书管理
  7. 云原生 - Istio可观察性之分布式跟踪(三)
  8. 杠杆原理的形象演示,你都懂了吗?
  9. Ubuntu16.04amp;amp;Windows 10双系统安装教程(UEFI模式)
  10. jQuery 的选择器 元素选择器
  11. es6 Generator函数的应用
  12. java filter加时间戳_java filter加时间戳
  13. java6 3_那些年,一起学的Java 6-3
  14. cocos 2d CCSprite 触摸识别 非常有用!!!!!
  15. [翻译]架构师应该知道的97件事_03关键问题可能不是出在技术上
  16. aws搭建深度学习gpu_选择合适的GPU进行AWS深度学习
  17. 阅读心得5:《阿里如何实现秒级百万TPS?搜索离线大数据平台架构解读》
  18. spring boot: Whitelabel Error Page的解决方案 --转载https://blog.csdn.net/sinat_31270499/article/details/822
  19. 【ES】MySQL语法版的ES来了,搜索引擎可以如此简单
  20. Python(2)——Python下载安装

热门文章

  1. 时间序列分析中如何求偏相关系数和最佳线性预报系数。ARMA(2,1)过程,ε_t是高斯白噪声WN(0,1),求该序列的前3 个偏相关系数和最佳线性预报系数
  2. LR实战之Discuz开源论坛——登录脚本
  3. .net core httpclient An error occurred while sending the request
  4. HNU-电子测试平台与工具-三人表决器实验报告
  5. php ppt转视频教程,狸窝ppt转换器软件新手使用教程 ppt转换成视频格式
  6. Brapher for mac 2.6 共享版 - 强大的Mac数学公式编辑器软件
  7. 统计字母、空格、数字和其它字符个数 (Java经典编程案例)
  8. 谷歌Android无障碍套件,android无障碍套件下载
  9. in a static way java_JAVA静态导入(inport static)详解
  10. JIRA高可用集群部署