自从苹果宣布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. ThinkPHP框架配置自定义的模板变量(十)

    原文:ThinkPHP框架配置自定义的模板变量(十) 模板替换(手册有详细介绍对应的目录) __PUBLIC__:会被替换成当前网站的公共目录 通常是 /Public/ __ROOT__: 会替换成当 ...

  2. java学习笔记06--正则表达式

    java学习笔记06--正则表达式 正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串验证.拆分.替换等操作. 例如:现在要去判断一个字符串是否由数字组成,则可以有以下的两种做法 不使用正则 ...

  3. Hbase0.96源码之HMaster(一)

    从main()函数開始 public static void main(String [] args) { VersionInfo.logVersion(); new HMasterCommandLi ...

  4. java 状态模式 解说演示样例代码

    package org.rui.pattern; import junit.framework.*; /** * 为了使同一个方法调用能够产生不同的行为,State 模式在代理(surrogate)的 ...

  5. Managing Data in Containers

    Managing Data in Containers So far we've been introduced to some basic Docker concepts, seen how to ...

  6. PHP SPL他们留下的宝石

    Rafael Dohms 上面的篇文章 让我为之惊艳,忍不住就翻译了下来,同一时候补充了部分内容. SPL,PHP 标准库(Standard PHP Library) ,此从 PHP 5.0 起内置的 ...

  7. 盒子游戏(The Seventh Hunan Collegiate Programming Contest)

    盒子游戏 有两个相同的盒子,其中一个装了n个球,另一个装了一个球.Alice和Bob发明了一个游戏,规则如下:Alice和Bob轮流操作,Alice先操作.每次操作时,游戏者先看看哪个盒子里的球的数目 ...

  8. UVA 11237 - Halloween treats(鸽笼原理)

    11237 - Halloween treats option=com_onlinejudge&Itemid=8&page=show_problem&category=516& ...

  9. B. 沙漠之旅(分组背包)

    B. 沙漠之旅 Time Limit: 1000ms Case Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: % ...

  10. NYOJ 284 坦克大战 【BFS】+【优先队列】

    坦克大战 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描写叙述 Many of us had played the game "Battle city" ...