为什么80%的码农都做不了架构师?>>>   

注:使用xcode6,启用调试bug提示输入密码,可在终端输入DevToolsSecurity -enable 解决 //======================== //2014/7/18 11:06 //========================

1、简单值(值类型同java中的类型对象:String,Double,Float,Int(Integer)...),新增了了两个有用的集合类型 Array和Dictionary let声明常量,var声明变量。(常量只能赋值一次,例如:圆周率π=3.14是个常量,声明圆周率:let PI = 3.14)

let和var声明的值,不用显式的指定值的类型,编译器会在编译的时候根据值的特征去推断指定的类型值

当然也可以显式指定值的类型,如 let a: Double = 70 var b: Float = 4

值不会隐式转换成其它类型,若要转换成其它类型需要进行强转,如 let label = "the width is" let width = 95 let widthlabel = label + String(width)

(),可以将括号中的值转换成字符串,在双引号中使用 ,在playground中,输入 var a:String = "(3+5)" + String(6) 将输出 86

数组和字典的定义: var array = ["a","b"] var dict = ["a":1,"b":2] dict["c"] = 3 //新增数据字典项

 定义空数组和字典var array = String[]()     var dict = Dictionary<String, T>然后根据相关的api函数添加数据项

2、控制流 if、switch做条件控制,for-in、for、while、do-while做循环控制 if let scores = [75,43,103,87,12] var teamScore = 0 for score in scores { if score > 50 { teamScore += 3 } else { teamScore += 1 } }

switch swift的switch的条件与java不同,swift不限制值的类型,其次是swift的switch运行遇到匹配的就会退出,而java需要手动的使用break退出 let vegetable = "red pepper" switch vegetable { case "celery": let vegetableComment = "Add some raisins" case "cucumber", "watercress" let vegetableComment = "That would make a good tea sandwich." case let x where x.hasSuffix("papper"): let vegetableComment = "Is it a spicy (x)?" default: let vegetableComment = "Everything tastes good in soup." }

针对数据字典(dictionary)循环遍历 swift提供了特殊的处理方式:在for后面用一组值代替 key-value let dict = ["Prime":[2,3,5,7,11,13],"Fibonacci":[1,1,2,3,5,8],"Square":[1,4,9,16,25]] var largest = 0 for (kind, numbers) in dict { for number in numbers { largest = number } } largest//输出25

while和do-while循环,基本与java的while和do-while类似,除了条件swift不需要括号,而java需要用括号 for循环,有三种写法 1> for i in array 2> for i in 0..10 3> for i = 0; i < 10; ++i (有点类似Oracle的 for..in.. loop)

注:操作符与前后需要有空格,不然编译会不通过

3、函数和闭包 swift的函数使用func声明,使用 "->" 声明函数的返回值类型,这一点在语法上与java的方法有很多的差别,还是很容易理解,还有更特殊的一点, swift的函数可以返回一组值,如: func getGasPrices() -> (Double, Double, Double) { return (3.0, 4.0, 5.0) } getGasPrices()

swift的函数参数和java的方法参数一样,可以使用 ...表示该函数有多个参数(几个参数在函数里用数组处理) func sumOf(numbers: Int...) -> Int { var sum = 0 for number in numbers { sum += number } }

嵌套函数(在函数体内声明的函数是嵌套函数),嵌套函数可以访问被嵌套函数的变量 func returnFifteen() -> Int { var y = 10 func add() { //嵌套函数 y += 5 } add() return y }

函数是一个很好的类型,这就意味着,函数可以作为其它函数的返回值 func makeIncrementr() -> (Int -> Int) { func addOne(number: Int) -> Int { return 1 + number } return addOne } var increment = makeIncrementer() increment(7)

同理函数也可以作为其它函数的参数 fucn hasAnyMatches(list: Int[], condition: Int-> Bool) -> Bool { for item in list { if condition(item) { return true } } return false } func lessThanTen(number: Int) -> Bool { return number < 10 } var numbers = [20,19,7,12] hasAnyMatches(numbers, lessThanTen)

函数是一种特使的闭包,下面例子是使用函数闭包给numbers的每一项*3倍 numbers.map({ (number:Int) -> Int in let result = 3 * number return result })

如果闭包的类型是已知的,则可以隐藏掉参数的类型或者返回值的类型 numbers.map({ number in 3 * number }) // 与上面的写法等价

可以使用参数的下标值替代参数的名字,给参数赋值。当一个闭包作为最后一个参数传给一个函数的时候,它可以直接跟在括号后面。 sort([1,5,3,12,2]){ $0 > $1 } // 输出 12,5,3,2,1 sort([1,5,3,12,2]){ $0 < $1 } //输出 1,2,3,5,12

4、对象和类 对象和类的概念与java相同,但使用方式有很大的区别,java是使用new实例化对象,而swift采取调用类似于函数的方式实例化对象 比如:创建空字符串 java:
String javaStr = new String(); swift: var swiftString = String()

swift类的初始化函数为 init class Shape { var type = String() init(type:String) { self.type = type } } 还有其它地方 n多区别,待以后慢慢发现

struct 与 class的区别:struct能支持和包含class的各种特征,唯一一个区别的地方是,struct是传值,而class是传引用

附上,中文《The Swift Programming Language》

PS: vmware mac os下 xcode6,老是崩溃,期待正式版快快出来。

转载于:https://my.oschina.net/vill/blog/292665

swift学习笔记之一——初见swift相关推荐

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

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

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

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

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

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

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

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

  5. Swift学习笔记笔记(一)Swift编程步骤数据类型

    一.实验目的: 掌握Swift编程方法. 掌握Swift数据类型. 二.实验原理: playground的界面与使用方法. 常量与变量的定义方法. 3.常量与变量的类型声明方法. 三.实验步骤及内容: ...

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

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

  7. Swift学习笔记-访问控制(Access Control)

    1.0 翻译:JaceFu 校对:ChildhoodAndy 2.0 翻译+校对:mmoaay 2.1 翻译:Prayer 校对:shanks,2015-11-01 本页内容包括: 模块和源文件 访问 ...

  8. swift学习笔记之-协议

    //协议(Protocols) import UIKit /*协议(Protocols) 1.协议定义了一个蓝图,规定了用来实现某一特定任务或者功能的方法.属性,以及其他需要的东西 2.类.结构体或枚 ...

  9. swift 学习笔记[1]

    最近在IMOOK(网站)上自学了下swift , 总结下swift相对其他语言的不同之处 , 方便熟悉其他语言的程序员,熟悉swift语言的特性. 1. swift 的特别之处就是可以在原有的类上 , ...

最新文章

  1. 企业绩效管理推不动,如何用绩效创造价值?
  2. 句法分析是什么?成分句法分析、依存句法分析又是什么?他们之间有什么区别?
  3. 关于c语言的fib的程序总结,C语言程序设计试卷及答案
  4. python查看文件夹下所有文件
  5. python基础语法-对目录(文件夹)的操作
  6. 数据库原理与应用(SQL Server)笔记 第九章 存储过程和触发器
  7. WriteFile写磁盘扇区是87错误的原因
  8. 【数论想法题】小C的问题 @科林明伦杯哈尔滨理工大学第八届程序设计竞赛...
  9. 构建微服务:Spring boot 入门篇
  10. 送书 | 师妹越多,团队集体智慧越高,当占比80%时,达到巅峰
  11. 架构师必须补充的能力
  12. MTK 驱动 Kernel-3.18中如何配置和使用spi
  13. 金山毒霸 2011 SP2 论坛内测开始
  14. 湖南省长沙市谷歌高清卫星地图下载
  15. 会计准则接轨国际 四方面体现中国特色
  16. Mac怎么方便看节假日安排,添加中国法定节假日安排
  17. 提升10%!如何将机器学习模型准确率从80%提高到90%以上
  18. 从零开始写高性能的人脸识别服务器(一)
  19. win10上VMware虚拟机设置固定IP地址
  20. 我的生活(小兵,班长,连长....大将)

热门文章

  1. linux脚本监控网卡流量,Shell脚本实现linux监控网卡实时流量[带宽]的方法
  2. alv界面允许数字输入负号_在Excel中输入这些字符,我被虐哭了
  3. android 进度条图标方形_Android - 条纹进度条实现,调整view宽度仿进度条
  4. 打印任意想要的菱形,例如3行的、9行的、13行的菱形
  5. Java 中textarea 换行,textarea 中的换行符
  6. ios上input框上边有阴影
  7. Shell命令-磁盘与文件系统之e2fsck、mkswap
  8. Kali学习笔记5:被动信息收集工具集
  9. python基础七之copy
  10. linux性能监控命令