swift学习笔记——基础语法

Jarlene Jarlene     2022-12-11     387

关键词:

Swift学习笔记——基础语法

本文是针对新手学习Swift笔记,记录学习过程的一些体会以及一些学习过程中的理解:

基础语法

第一次接触Swift或者Oc语法的时候,总感觉有点像脚本语言,不像Java或者C/C++。当然这也只是个人的体会而已。


  • 常量和变量
    比较容易理解:下面这段代码分别定义类一个常量maximumNumberOfLoginAttempts和一个变量currentLoginAttempt。关键字分别是let和var。let这个与java final,C/C++的const相同功能。Swift var关键字可以通过推断来判别变量的类型(当然你也可以直接声明变量的类型,代码welcomeMessage就是标注了类型(String))。
   let maximumNumberOfLoginAttempts = 10
   var currentLoginAttempt = 0
   var welcomeMessage: String
  • 基本类型
    基本类型包含Int,Float,Double,String等类型。
    Swift 提供了8, 16, 32和64位的有符号和无符号整数类型(UInt8, Int8; UInt16, Int16; UInt32, Int32; UInt64, Int64)特别的:

    1. 在32位平台上, Int 和 Int32 长度相同。
    2. 在64位平台上, Int 和 Int64 长度相同。
    3. 在32位平台上,UInt 和 UInt32 长度相同。
    4. 在64位平台上, UInt 和 UInt64 长度相同。

    浮点类型比整数类型表示的范围更大, 可以存储比Int类型更大或者更小的数字。 Swift 提供了两种有符号浮点数类型:
    Double——表示64位浮点数,当你需要存储很大或者很高精度的浮点数时请使用此类型;
    Float——表示32位浮点数,精度要求不高的话可以使用此类型。

  • 类型转换
    类型转换比较简单,举例子来说:

var a = 3.14; // a is  float
var b = Int(a); // b = 3 is Int
  • 类型别名
    关键字typealias 是类似于C/C++中的typedef,可以定义类型。
typealias AudioSample = UInt16
var maxAmplitudeFound = AudioSample.min // maxAmplitudeFound  = 0
  • 元组
    在java,C/C++中没有这个概念,Swift或者Oc中有元组这种数据类型。元组( tuples) 把多个值组合成一个复合值。 元组内的值可以是任意类型, 并不要求是相同类型。从下面例子看,元组有点类似Java中Map。当然这个只是说可以包含多种类型的数据。元组具有和下标配合使用等特性
let http404Error = (404, "Not Found")  
// http404Error 的类型是 (Int, String), 值是 (404, "Not Found")

let (statusCode, statusMessage) = http404Error
println("The status code is \\(statusCode)")
// 输出 "The status code is 404"

println("The status message is \\(statusMessage)")
// 输出 "The status message is Not Found"

let (justTheStatusCode, _) = http404Error
println("The status code is \\(justTheStatusCode)")

println("The status code is \\(http404Error.0)")
// 输出 "The status code is 404"
println("The status message is \\(http404Error.1)")
// 输出 "The status message is Not Found"

let http200Status = (statusCode: 200, description: "OK")
println("The status code is \\(http200Status.statusCode)")
// 输出 "The status code is 200"
println("The status message is \\(http200Status.description)")
// 输出 "The status message is OK"
  • 可选类型
    可选类型是Swift一种独有特性,Java,C/C++以及OC都不包含这个特性。使用可选类型( optionals) 来处理值可能缺失的情况。 可选类型表示:
    • 有值, 等于 x
    • 没有值
let possibleNumber = "123"
let convertedNumber = possibleNumber.toInt()
// convertedNumber 被推测为类型 "Int?", 或者类型 "optional Int"

if convertedNumber 
   println("\\(possibleNumber) has an integer value of \\(convertedNumber!)")
 else 
   println("\\(possibleNumber) could not be converted to an integer")
  
// 输出 "123 has an integer value of 123"
  • 可选绑定
    使用可选绑定( optional binding) 来判断可选类型是否包含值, 如果包含就把值赋给一个临时常量或者变量。 可选绑定可以用在 if 和 while 语句中来对可选类型的值进行判断并把值赋给一个常量或者变量。
if let constantName = someOptional 
   statements


if let actualNumber = possibleNumber.toInt() 
   println("\\(possibleNumber) has an integer value of \\(actualNumber)")
 else 
   println("\\(possibleNumber) could not be converted to an integer")

// 输出 "123 has an integer value of 123"
  • nil
    你可以给可选变量赋值为 nil 来表示它没有值:
var serverResponseCode: Int? = 404
// serverResponseCode 包含一个可选的 Int 值 404
serverResponseCode = nil
// serverResponseCode 现在不包含值

var surveyAnswer: String?
// surveyAnswer 被自动设置为 nil
  • 隐式解析可选类型
    隐式解析可选类型是把想要用作可选的类型的后面的问号( String? ) 改成感叹号( String! ) 来声明一个隐式解析可选类型。可以把隐式解析可选类型当做一个可以自动解析的可选类型。 你要做的只是声明的时候把感叹号放到类型的结尾, 而不是
    每次取值的可选名字的结尾。
let possibleString: String? = "An optional string."
println(possibleString!) // 需要惊叹号来获取值
// 输出 "An optional string."

let assumedString: String! = "An implicitly unwrapped optional string."
println(assumedString) // 不需要感叹号
// 输出 "An implicitly unwrapped optional string."

至此基础语法部分差不多完了,其他一些不重要的,或者说其他语言都有的,就没有叙述。下一节将讲述基本运算符。

kotlin基础语法学习笔记(代码片段)

Kotlin简介Kotlin是一门与Swift类似的静态类型JVM语言,由JetBrains设计开发并开源。与Java相比,Kotlin的语法更简洁、更具表达性,而且提供了更多的特性,比如,高阶函数、操作符重载、字符串模板。它与Java高度... 查看详情

swift学习(1基础语法)

Swift  基础语法基本1.取消了预处理命令2.取消了指针的概念3.取消了NS前缀4.大量将类替换成struct5.“;”在同一行用来分割语句,如果不是同一行可以省略6.可选项7.playground8.条件语句”if”,空执行”()”9.没有非0即真的逻... 查看详情

swift基础学习基本语法

   Swift 简介(赞美一番,收集了多篇关于Swift学习教程的语言简介一直以为英语和汉语混写的时候只是英语字母结尾的地方打空格,原来是英语字母的开头和结尾都要加一个空格,英语字母后面是标点符号的时候不加空... 查看详情

swift基础语法的学习(代码片段)

Swift基础语法的学习1.Swift中的模块化的标注;在OC中使用是:#pragmamark-标注一段的相关功能;在Swift中使用的是:MARK:-标注一段的相关功能;实现的效果如下图:2.Swift的基本“输入”,“输出”语句ÿ... 查看详情

swift学习笔记(语法篇)--string与character类型

一:String概述不同于Objective-C中的NSString与NSMutableString,在Swift中,存储String类型的数据能否改变,取决于定义数据是var还是let,var是变量,能改变String的长度,增加,修改,删除其中的每一个字符等操作,而let是常量,一旦定义... 查看详情

swift学习笔记:枚举

目录:基本语法关联值原始值枚举为一组相关的值定义了一个共同的类型。?可以给枚举成员指定原始值类型:字符串,字符,整型值或浮点数等?枚举成员可以指定任意类型的关联值存储到枚举成员中?枚举可以定义构造函数和遵... 查看详情

html学习笔记:2.基础语法

HTML基本结构HTML标签HTML元素HTML属性注释①基本结构<html>html:指明是个html文件<head><title>标题</title>head:头部信息,在网页中不会显示出来</head><body>网页主体内容body:网页内容,浏览器中能看到的所有内容... 查看详情

html5语法基础学习笔记

1.行间样式给单独的标签添加样式.<divstyle="width:100px;height:100px;background-color:red;"></div>优点:比较方便可以即时的添加属性。缺点:修改属性非常麻烦、需要一个个去修改。2.内联样式表<style>div{<!--选择器跟{}符号属... 查看详情

kotlin入门基础语法学习笔记(代码片段)

敲了一天的kotlin基础语法,整理归纳到一个类里面,便于以后忘记的时候复习。/***CreatedbyGGon2017/11/20.*///main函数funmain(args:Array<String>)vartestMain=TestMain()print(testMain.array())classTestMain//单例的写法compani 查看详情

fpga/verilog学习笔记——verilog基础语法

文章目录​​Verilog基础语法​​​​一、基础知识​​​​1.逻辑值​​​​2.数字进制格式​​​​3.标识符​​​​二、数据类型​​​​1.reg和wire类型​​​​(1)reg寄存器类型​​​​(2)wire线网类型​​​​(3)reg... 查看详情

swift学习笔记-swift3.0用gcd实现计时器

swift3.0之后,GCD的语法发生了翻天覆地的变化,从过去的c语法变成了点语法,下面是变化之后用GCD实现计时器的方法:先贴代码://定义需要计时的时间vartimeCount=60//在global线程里创建一个时间源letcodeTimer... 查看详情

swift学习笔记-1

Apple官方开发手冊地址:https://developer.apple.com/library/prerelease/ios/referencelibrary/GettingStarted/LandingPage/index.html语法概览1SimpleValues常量定义:let变量定义:var常量或变量类型和初始值一致:varmyVariable=42myVariable=50letmy 查看详情

学习笔记5python基础语法

Python基础语法【准备工作】我们在Jupyternotebook里面New一个Python3就可以开始愉快的练习了。一、数字和字符串的定义方法a=100          #赋值语句:定义了一个变量c=‘HelloWorld!’ #f赋值语句:定义了一个字符串... 查看详情

学习笔记5python基础语法

Python基础语法【准备工作】我们在Jupyternotebook里面New一个Python3就可以开始愉快的练习了。一、数字和字符串的定义方法a=100          #赋值语句:定义了一个变量c=‘HelloWorld!’ #f赋值语句:定义了一个字符串... 查看详情

swift学习笔记:闭包

目录:基本语法尾随闭包值捕获闭包是自包含的函数代码块,闭包采取如下三种形式之一:?全局函数是一个有名字但不会捕获任何值的闭包?嵌套函数是一个有名字并可以捕获其封闭函数域内值的闭包?闭包表达式是一个利用轻量... 查看详情

swift与c#的基础语法比较

...心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~总体而言,感觉Swift是一种前后端多种语言混合的产物~~~做为一名.NET阵营人士,少少多多总喜欢通过对比来加深认识。所以做了一个简单的比较列表。下面... 查看详情

学习笔记js进阶语法一dom基础

内容整理自《从0到1Javascript快速上手》下半部分-进阶语法篇 getElementById()和getElementsByTagName()区别:1、 getElementById()获取的是一个元素,而getElementsByTagName()获取的是多个元素,即“类数组”(也成伪数组)... 查看详情

python系列学习笔记——基础语法规则

前言本教程会依赖Python3作为依赖讲解,这节我们介绍基础的语法应用。标识符的定义第一个字符必须是字母表中字母或下划线’_’。标识符的其他的部分有字母、数字和下划线组成。标识符对大小写敏感,也就是区分大小写... 查看详情