swift 2.0基本语法

下面为一些swift 2.0 的基本语法,写在playground中,每次swift版本跟新的时候,打开瞅瞅,就可以对比出哪里发生了修改。

内容包括:01变量&常量  02分支  03循环  04字符串  05数组  06字典  07函数

01变量&常量

//: Playground - noun: a place where people can play
import UIKit

var str = "Hello, playground"
/*:
    let 常量
    var 变量

    * 自动`推导`,能够根据右边的代码,推导出变量的准确类型
*/

let x = 100
// 常量一旦设置数值,就不能再次修改
//x = 300

var y = 200
y = 300

print(x + y)

/*:
    swift 对数据类型要求异常严格

    * 整数的默认类型是 Int(long 64位)
    * 小数的默认类型是 Double (OC 中使用比较多的是 CGFloat)
    * swift 中任何时候,都不会做 `隐式转换`,如果要对不同类型的数据进行计算,必须要自己转换
*/

let i = 10
let j = 8.5

//let k = i + j
let iNum = i + Int(j)
let dNum = Double(i) + j

let size = CGSizeMake(100, 100)
let w = CGFloat(j) + size.width

02分支

//: Playground - noun: a place where people can play

import UIKit

var str = "Hello, playground"

let i = 50

/*:
    1. 条件不需要括号
    2. {} 不能省略
*/
if i > 20 {
    print("OK")
}

/*:
    * OC 和 C 中非零即真
    * swift 中逻辑值只有两个 true / false
*/
if i == 50 {
    print("OK")
}

// 三目,语法和 OC 基本一样
let b = i < 20 ? 10 : 80

/**
    可选项(Optional) ?
    表示变量可以有值,也可以没有值

    * convenience init? 构造函数,? 表示不一定能够实例化出对象

    * `!` 表示程序员告诉编译器对象一定有值,编译能够通过
    * 如果运行时,没有值,就`崩溃`
*/

let url = NSURL(string: "http://www.baidu.com")
//如果不确定url 真的有值,增加一个 if
if url != nil {
    let request = NSURLRequest(URL: url!)
}

print(url)

// 判断对象是否有值 - 增加了 if ,能够保证进入 {} 代码,url1 一定有值的
if let url1 = NSURL(string: "http://www.baidu.com/s?wd=zhang") {
    let request = NSURLRequest(URL: url1)
}

03循环

//: Playground - noun: a place where people can play

import UIKit

for var i = 0; i < 10; i++ {
    print(i)
}

/*:
    swift
    * 0~9 其中 0..<10 不能有空格
*/
for i in 0..<10 {
    print(i)
}

// 0~10
for i in 0...10 {
    print(i)
}

// 不关心下标,可以使用 _ 省略
for _ in 0..<10 {
    print("hello world")
}

04字符串

//: Playground - noun: a place where people can play

import UIKit

/*:
    Swift 中使用 String 是一个结构体,效率会高,支持遍历
    OC 的 NSString,是一个对象

    * Swift 中,String 和 NSString 之间的转换很容易
*/

var str = "我要飞的更高"

// swift 2.0 中遍历字符
for c in str.characters {
    print(c)
}

// 字符串拼接
let i = 1
let rect = CGRectMake(0, 0, 100, 100)
str = str + "\(i)" + "\(rect)"

// 拼接字符串的时候,一定记住如果是可选项,要特别注意,带上 Optional
var x: Int?
x = 10
let str1 = "\(x!)"

// 格式
let frmString = String(format: "%02d:%02d:%02d", arguments: [11, 1, 59])

/*:
    如果使用 Range 的时候,最好用 NSString
*/
// 跟原来的字符串一模一样
var subStr = str.substringWithRange(Range<String.Index>(start: str.startIndex, end: str.endIndex))
print(subStr)

// 从哪里开始,到哪里结束
subStr = str.substringWithRange(Range<String.Index>(start: advance(str.startIndex, 3), end: advance(str.startIndex, 6)))
print(subStr)

let myStr: NSString = str
let myStr1 = str as NSString

myStr.substringWithRange(NSMakeRange(0, 3))

05数组

import UIKit

var str = "Hello, playground"

/*:
    数组定义 []
*/

let array = ["zhangsan", "lisi"]

// 遍历
for str in array {
    print(str)
}

print(array[0])
print(array[1])

// 不能向不可变数组添加内容
//array.append("wangwu")

/*:
    可变 var 和 不可变 let

    * OC 中的数组,可以存放任意类型的对象
*/
// array1 的类型 [String],自动推导,只允许存放字符串
var array1 = ["xiaohua", "xiaocao"];
// array2 的类型 [NSObject],可以存放`任意对象`
// 在 swift 中,数字也可以直接当成对象存放在数组,不需要`转换`
var array2 = ["xiaohua", "xiaocao", 123];
array1.append("laozhang")
array2.append(100)

/*:
    数组的定义
*/
// array3 是一个仅允许存放字符串的数组,定义类型
var array3: [String]

// 对 array3 进行实例化,在此之前,不允许操作
array3 = [String]()

array3.append("laowang")

// 数组的合并
array3 += array1

// 必须是相同类型的才能够合并
// 提示:在 swift 开发中,通常数组中保存的对象类型,都是一样的!
//array3 += array2

// 数组的删除
array3.removeAtIndex(2)
array3

array3 += array1
print(array3.count)

// 清空数组 keepCapacity 是否保持容量
array3.removeAll(keepCapacity: false)

// 添加内容
// 如果向数组中追加元素,超过了容量,会直接在现有容量基础上 * 2
// OC 实例化可变数组,最好指定容量
for i in 0..<16 {
    array3.append("hello - \(i)")
    print(array3[i])
    print(array3.capacity)

}

06字典

//: Playground - noun: a place where people can play

import UIKit

var str = "Hello, playground"

/*:
    定义字典 []

    let 不可变
    var 可变
*/
// [String : NSObject] - 类型最常见
// JSON 的数据格式,key 是 String
// [key: value]
var dict = ["name": "张三", "age": 18]
dict

// 如果 key 不存在,会新建
dict["title"] = "boss"
dict
// 如果 key 存在,会覆盖
dict["name"] = "lisi"
dict

/*:
    字典的遍历

    k, v 可以随便写,前面是 key,后面是 value
*/
for (vv, kk) in dict {
    print(vv + "--- \(kk)")
}

/*:
    合并字典
*/
// 1. 定义字典
var dict1: [String: NSObject]
dict1 = [String: NSObject]()
dict1["nickname"] = "老王"
dict1["age"] = 80

// 2. 合并-如果存在会覆盖,如果没有会新建
for (k, v) in dict1 {
    dict[k] = v
}

dict

07函数

import UIKit

var str = "Hello, playground"

//参数及返回值,取消了1.2中的#
func sum(num1 a: Int, num2 b: Int) -> Int{
    return a+b
}

sum(num1: 10, num2: 20)

func prinnnnt(printtt a: Int) -> Void {
    print(a)
}

prinnnnt(printtt: 10)
时间: 2024-10-05 23:17:21

swift 2.0基本语法的相关文章

Swift 入门之简单语法(一)

定义 let 定义常量,一经赋值不允许再修改 var 定义变量,赋值之后仍然可以修改 //: # 常量 //: 定义常量并且直接设置数值 let x = 20 //: 常量数值一经设置,不能修改,以下代码会报错 // x = 30 //: 使用 `: 类型`,仅仅只定义类型,而没有设置数值 let x1: Int //: 常量有一次设置数值的机会,以下代码没有问题,因为 x1 还没有被设置数值 x1 = 30 //: 一旦设置了数值之后,则不能再次修改,以下代码会报错,因为 x1 已经被设置了数

iOS10.0 &amp; Swift 3.0 对于升级项目的建议

iOS & Swift新旧版本更替, 在Apple WWDC大会开始之际, 也迎来了iOS 10.0, Swift 3.0 测试版, 到目前为止, 已经是测试版2.0, 每次更新都带来了新的语法变化, Swift更加简洁, 但是Xcode 越发不给力, 输出变本加厉, NSLog 一如既往的不好使, 但是,好消息是, 无论语法怎么改变, 在已有项目的基础上, Xcode更新到8.0 测试版 2.0, 您只需按照系统提示的红空心原点提示, 一个一个的替换, 就可以完美的过度到iOS 10.0,  

iOS开发——学习总结swift篇&amp;swift 2.0学习与总结一

swift 2.0学习与总结一 一:属性策略(OC中的叫法) strong: 在Swift中是默认的 weak: 通过weak关键词申明 weak var delegate: UITextFieldDelegate? readonly,readwrie 直接通过声明变量var,声明常量let的方式来指明 copy 通过@NSCopying指令声明. 值 得注意的是String,Array和Dictionary在Swift是以值类型(value type)而不是引用类型(reference typ

[转]Swift 2.0初探:值得注意的新特性

转自http://www.cocoachina.com/swift/20150623/12231.html 转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度的WWDC大会如期而至,在大会上Apple发布了Swift 2.0,引入了很多新的特性,以帮助开发者能更快,更简单的构建应用.我在这里也说道说道Swift 2.0中值得大家注意的新特性. guard语句 guard语句和if语

Swift 2.0初探:值得注意的新特性

转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度的WWDC大会如期而至,在大会上Apple发布了Swift 2.0,引入了很多新的特性,以帮助开发者能更快,更简单的构建应用.我在这里也说道说道Swift 2.0中值得大家注意的新特性. guard语句 guard语句和if语句有点类似,都是根据其关键字之后的表达式的布尔值决定下一步执行什么.但与if语句不同的是,guard语句只会

Swift 3.0 令人兴奋,但Objective-C也有小改进--Objective-C的类属性

由于Swift 3.0 出了太多令人兴奋的新特性,人们很容易忽略 Objective-C中的小改动.或许你会觉得苹果提及Objective-C 很可能是为了提高和Swift互操作性(译者注:互操作性主要是指OC代码与Swift代码相互转换),不过苹果仍然很欢迎开发者用Objective-C来完成工作. 在这篇文章中,我们就来看看Objective-C中新添加的类属性.Objective-C 类属性摘自 Xcode 8正式版中的说明:Objective-C now supports class p

Swift入门教程:基本语法大全

原文:Swift入门教程:基本语法大全       简介:                                                                                                                                                                                  什么是Swift                                  

Swift 2.0学习笔记(Day 19)——函数参数传递

原创文章,欢迎转载.转载请注明:关东升的博客   函数的语法格式如下: func 函数名(参数列表) -> 返回值类型 { 语句组 return 返回值 } 关键字是func. 多个参数列表之间可以用逗号(,)分隔,也可以没有参数. 使用箭头“->”指示返回值类型.返回值有单个值和多个值.如果函数没有返回值,则“-> 返回值类型”部分可以省略. 如果函数有返回值,就需要在函数体最后使用return语句:如果没有返回值,则函数体中可以省略return语句. 函数定义示例代码如下: func

Swift入门教程:基本语法(三)

打印输出 Swift提供了2个打印输出函数 println :输出内容后会自动换行 print :对比println,少了个自动换行的功能 示例 输出字符串 println("欢迎学习传智播客iOS学院Swift教程") var name = "传智播客iOS学院\n" print(name) 输出其他数据类型 var age = 7 println(age) println("我今年\(age)岁") 元组类型 什么元组类型 元组类型由 N个