自从苹果宣布swift之后,我一直想了解,他一直没有能够把它的正式学习,从今天开始,我会用我的博客来驱动swift得知,据我们了解还快。

1、定义变量和常量

var  定义变量,let定义常量。

比如:

var test = 1
test = 2 //变量能够改变值 let test = 1
test = 2 //常量不能改变值,编译器会报错 var test1=1,test2=2,test3=3 //逗号分隔多个变量

2、添加类型标注

在 var test = 1 这个样例中。test被swift判断为int类型。

swift是类型安全的。

var test: Int = 1  这个定义和上面是一样的。仅仅是给test这个变量添加了一个类型标注。告诉swfit不用判断了。

3、基础数据类型

Int表示整型值;Double和Float表示浮点型值;Bool是布尔型值;String是文本型数据;Character是字符类型。Swift
还提供了两个主要的集合类型。Array和Dictionary

4、全局输出函数 println和print

这个大家都知道,换行和不换行的差别。输出到控制台。

比如:println("this is my first swift test")

如今要把上面定义的test进行输出怎么办?

println("test value = \(test)")

Swift 用字符串插值(string interpolation)的方式把常量名或者变量名当做占位符增加到长字符串中,Swift 会用当前常量或变量的值替换这些占位符,就是\()

5、凝视    //当行凝视  /*  */片段凝视

6、分号  可要可不要。任意,可是假设一行写多条独立的语句就必需要分号了

比如:let test = "test";println(test)

7、整数  整数分为有符号(正,负,0)和无符号(正,0)

Swift 提供了8,16。32和64位的有符号和无符号整数类型。这些整数类型和 C 语言的命名方式非常像。比方8位无符号整数类型是UInt8。32位有符号整数类型是Int32。

就像 Swift 的其它类型一样。整数类型採用大写命名法。

let minValue = UInt8.min  // minValue 为 0。是 UInt8 类型的最小值
let maxValue = UInt8.max // maxValue 为 255。是 UInt8 类型的最大值

Int 和
UInt

一般来说。你不须要专门指定整数的长度。Swift 提供了一个特殊的整数类型Int,长度与当前平台的原生字长同样:

在32位平台上,Int和Int32长度同样。

在64位平台上,Int和Int64长度同样。

Swift 也提供了一个特殊的无符号类型UInt,长度与当前平台的原生字长同样:



在32位平台上。UInt和UInt32长度同样。

在64位平台上,UInt和UInt64长度同样

8、浮点数

Double 和
Float

浮点数是有小数部分的数字



浮点类型比整数类型表示的范围更大。能够存储比Int类型更大或者更小的数字。

Swift 提供了两种有符号浮点数类型:



Double表示64位浮点数。当你须要存储非常大或者非常高精度的浮点数时请使用此类型。

Float表示32位浮点数。

精度要求不高的话能够使用此类型。



Double准确度非常高。至少有15位数字,而Float最少仅仅有6位数字。选择哪个类型取决于你的代码须要处理的值的范围。

9、数值型字面量

整数字面量能够被写作:



一个十进制数。没有前缀

一个二进制数。前缀是0b

一个八进制数,前缀是0o

一个十六进制数。前缀是0x

浮点字面量能够是十进制(没有前缀)或者是十六进制(前缀是0x)。小数点两边必须有至少一个十进制数字(或者是十六进制的数字)。浮点字面量另一个可选的指数(exponent)。在十进制浮点数中通过大写或者小写的e来指定。在十六进制浮点数中通过大写或者小写的p来指定。



假设一个十进制数的指数为exp。那这个数相当于基数和10^exp的乘积:



1.25e2 表示 1.25 × 10^2,等于 125.0。

1.25e-2 表示 1.25 × 10^-2,等于 0.0125。

假设一个十六进制数的指数为exp,那这个数相当于基数和2^exp的乘积:



0xFp2 表示 15 × 2^2,等于 60.0。

0xFp-2 表示 15 × 2^-2,等于 3.75。

以下的这些浮点字面量都等于十进制的12.1875:



let decimalDouble = 12.1875

let exponentDouble = 1.21875e1

let hexadecimalDouble = 0xC.3p0

数值类字面量能够包括额外的格式来增强可读性。整数和浮点数都能够加入额外的零而且包括下划线,并不会影响字面量:



let paddedDouble = 000123.456

let oneMillion = 1_000_000

let justOverOneMillion = 1_000_000.000_000_1

看起来就头疼,哪那么麻烦都用十进制不就好了。。。  吐吐槽 还是有点用的。

。。

10、字符类型的类型转换

var one: Int = 10
var two = 3.11
var three = Double(one) + two //Double有整型构造器,其他整数类型一样处理,这里是演示样例

11、布尔值  true  false

12、类型别名  typealias

给整型改个名字,意义不大。

阅读性变差。。比如

typealias MyInt = Int
var test: MyInt = 123

13、元组 这个挺重要的

元组(tuples)把多个值组合成一个复合值。

元组内的值能够使随意类型。并不要求是同样类型。

比如创建一个(Int,String)类型的元组  :  (500,"server error")

let Mytuples = (500,"server error") //定义一个元组
let (code,message) = Mytuples //将元组数据分解输出
let (code,_) = Mytuples //仅仅须要第一个值 。不须要的用_表示吧
println("code is \(code)") //输出500
println("code is \(Mytuples.0)") //通过下标訪问 输出500
let Mytuples2 = (code:500,message:"server error") //定义一个带參数名称的元组
println("code is \(Mytuples2.code)");//通过元组元素名称訪问 输出500

14、可选类型

使用可选类型(optionals)来处理值可能缺失的情况。

可选类型表示:



有值,等于 x

或者

没有值  nil

let possibleNumber = "123"

let convertedNumber = possibleNumber.toInt()

// convertedNumber 被猜測为类型 "Int?

", 或者类型 "optional Int"

由于toInt方法可能会失败。所以它返回一个可选类型(optional)Int,而不是一个Int。一个可选的Int被写作Int?

而不是Int。问号暗示包括的值是可选类型,也就是说可能包括Int值也可能不包括值。

(不能包括其它不论什么值比方Bool值或者String值。仅仅能是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"

你能够在可选的名字后面加一个感叹号(!)来获取值

上面的多麻烦啊  还得推断变量有没有值:用if推断,再用!进行强制解析。

能够用可选绑定来简化代码:

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"

也能够用隐式解析可选类型来处理(确定变量总是会有值才行,否则会出错的)

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

15、断言  推断逻辑 true继续运行  false 结束应用

比如:let a = 1;assert(a >= 0)  就会触发

版权声明:本文博主原创文章。博客,未经同意不得转载。

【Swift】学习笔记(一)——熟知 基础数据类型,编码风格,元组,主张的更多相关文章

  1. Java学习笔记:语言基础

    Java学习笔记:语言基础 2014-1-31   最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...

  2. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

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

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

  4. Mysql学习笔记(二)数据类型 补充

    原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...

  5. Mysql学习笔记(一)数据类型

    原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型     Mysql数据类型             含义(有符号)     tinyint(m ...

  6. Swift学习笔记(一)搭配环境以及代码运行成功

    原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...

  7. 卷积神经网络(CNN)学习笔记1:基础入门

    卷积神经网络(CNN)学习笔记1:基础入门 Posted on 2016-03-01   |   In Machine Learning  |   9 Comments  |   14935  Vie ...

  8. UFLDL深度学习笔记 (五)自编码线性解码器

    UFLDL深度学习笔记 (五)自编码线性解码器 1. 基本问题 在第一篇 UFLDL深度学习笔记 (一)基本知识与稀疏自编码中讨论了激活函数为\(sigmoid\)函数的系数自编码网络,本文要讨论&q ...

  9. JavaSE学习笔记(1)---数据类型、运算符、控制结构

    javaSE学习笔记(1) 数据类型和运算符 1.注释可以提高程序的可读性.可划分为 单行注释 // 多行注释 /.../ 文档注释 /**...*/ 2.标识符的命名规则: 标识符必须以字母.下划线 ...

随机推荐

  1. shell 调试

    感觉编写shell在查找错误的过程中,很让你崩溃,还好shell也提供了一些调试的方式: 语法检查      -n选项做语法检查,而不执行脚本      sh -n script_name.sh 启动 ...

  2. web desktop在线演示

    http://mydesk.sinaapp.com 基于extjs的web desktop应用框架. 1.跨浏览器 2.动态载入所需css,js文件 3.权限管理 4.支持多语种 5.支持asp,js ...

  3. Delphi中类的运行期TypeInfo信息结构说明

    Delphi中类的运行期TypeInfo信息结构说明 CnPack 开源软件项目 2007-09-19 21:55:58 Delphi中类的运行期TypeInfo信息结构说明作者:刘啸CnPack开发 ...

  4. Leetcode-Database-176-Second Highest Salary-Easy(转)

    leetcode地址:https://oj.leetcode.com/problems/second-highest-salary/ 这个问题很有趣,是要求我们写个sql来查询Employee表里第二 ...

  5. BZOJ 3218(a + b Problem-二分图套值域线段树)

    出这题的人是怎么想出来的…… 言归正传,这题是二分图套值域线段树. 首先经过 @Vfleaking的神奇建图后,把图拆成二分图, 不妨利用有向图最小割的性质建图(以前我一直以为最小割和边的方向无关,可 ...

  6. MySQL的Master/Slave群集安装和配置

    本文介绍MySQL的Master/Slave群集安装和配置,版本号安装最新的稳定版GA 5.6.19. 为了支持有限HA.我们用Master/Slave读写简单孤立的集群.有限HA这是当Master不 ...

  7. VSTO学习笔记(十五)Office 2013 初体验

    原文:VSTO学习笔记(十五)Office 2013 初体验 Office 2013 近期发布了首个面向消费者的预览版本,我也于第一时间进行了更新试用.从此开始VSTO系列全面转向Office 201 ...

  8. DHTML【10】--Javascript

    大家好,这一节主要介绍Javascript的函数.函数是Javascript的核心中的核心,这么强调一点都不过分,相信没有人反对,如果有人反对,你以后可以不用函数,呵呵,说的有点绝了啊. 下面看一下J ...

  9. UVA 639 (13.08.25)

     Don't Get Rooked  In chess, the rook is a piece that can move any number of squaresvertically or ho ...

  10. Swift实现OC中的单例模式

    一.MySingle类 import Foundation class MySingle{ //定义单例的属性 var name:String? var age:Int? var height:Dou ...