Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。Swift是一款易学易用的编程语言,而且它还是第一套具有与脚本语言同样的表现力和趣味性的系统编程语言。Swift的设计以安全为出发点,以避免各种常见的编程错误类别,下面我以代码的形式向大家介绍一下swift的基础语法
“//
// main.swift
// Swift语法
//
// Created by lanou on 16/7/21.
// Copyright © 2016年 Huangyu. All rights reserved.
//
import Foundation
print("Hello, World!")
//Int Float
let a:Int = 12
// let var
let str = "hello"
//str.characters.count
//str.lengthOfBytesUsingEncoding(NSUTF8StringEncoding)
//大小写转换
//str.uppercaseString
//str.lowercaseString
//==
//"123\(str)4555"
let str2 = String(format: "%02d:%02d", 1,2)
let str3 = String(format: "%02d:%02d", arguments: [1,2])
print(str2)
print(str3)
//str2.substringToIndex(<#T##index: Index##Index#>)
//字符串的其他操作全部转化为NSString再去操作
//转换
let str4:NSString = str2 as NSString
//数组 Array
let array1 = ["A", "2", "3", "4"]
//initWith/init在swift里面转化成()
let array2 = [String]()
//元素个数.count
//数组遍历 for-in (明确的指出数组的类型)
for temp in array1 as [String]{
print(temp.characters.count)
}
//元组遍历
for (index, value) in array1.enumerate()
{
print("index = \(index),value = \(value)")
}
//可变数组
var mutableArray = [String]()
mutableArray.append("hello")
mutableArray.append("world")
//mutableArray.append(23)
print(mutableArray)
mutableArray.removeFirst(1)
print(mutableArray)
mutableArray.removeAll()
print(mutableArray)
//字典 Dictionary
let dict = ["key1":"value1", "key2":"value2", "key3":"value3"]
print(dict)
//通过Key值访问value值
print(dict["key1"])
//for - in
for (tempkey, tempvalue) in dict.enumerate()
{
print("key = \(tempkey), value = \(tempkey)")
}
//可变字典
var dict3 = ["key":"value"]
//合并
for (tempkey, tempvalue) in dict
{
// 如果key存在的则是一个更新的键值对操作, 否则就是一个增加键值对操作
dict3[tempkey] = tempvalue
}
print(dict3)
//如果一个值可能为nil, 那么这个值就是可选类型, 用?标识
//Optional包围的就是一个可选类型
//可选类型不能直接使用, 必须强制解包 !制解包,对nil强制解包会造成崩溃
var a1:String?
a1 = "12345"
print(a1!.characters.count)
//(a2 ?? "234")对可选类型进行判断, 如果可选类型值为nil, 则给它一个默认值
var a2:String?
a2 = "12345"
print(a2 ?? "234".characters.count)
//if 条件语句()可以省略 {}不能省略
//if没有非零即真的概念, 只有true false的两种概念
let tempvalue = 10;
if tempvalue > 5{
print("tempvalue > 5")
}
//可选类型的条件分支
let str5:String? = "hello"
//(1)if-let是对可选类型的判断, 如果可选类型为nil, 则不执行代码块, 如果不为空则用tempStr来接收此刻这个可选类型的解包后的值
if let tempStr = str5{
print(tempStr)
}
//(2)if-let-where 跟 if-let相似, where是对前面定义的这个局部变量再做一层判断
if let tempStr = str5 where tempStr.characters.count > 2{
print("tempStr.length = \(tempStr.characters.count)")
}
//guard - let -else()
//如果可选类型str为nil, 则执行code代码块, 最后一定要return, 如果不为nil则强制解包后的值赋值给tempStr,这样在 {}外面就可以使用tempStr
/*
guard let tempStr = str else {
code
return
}
tempStr...
*/
/*
//switch 不局限判断整型, 可以是浮点型,也可以是字符串。。。switch后面的小挂号可以省略, 大号不能省略 case后面至少要执行语句!!并且case后面的大号可以省略, break可以不写, 不会造成贯穿 default一定要写, 并且只能写在后面
let f = 3.2
switch f {
case 3.0:
print("===3.0")
case 3.1:
print("===3.1")
case 3.2:
print("3.2")
default:
print("unknow")
}
*/
for i in 0 ..< 5 {//0..<5------[0,5) 0.....5----[0,5]
print("i = \(i)")
}
//枚举(枚举值可以关联浮点, 字符串, 没有默认的关联值)
//关联如果是Int, 会默认的递增上去, 如果不是Int, 必须每个枚举值都关联上对应的值
enum Month:Float{
case January = 11.2
case February = 11.3
case March = 13.2
case April = 13.6
}
//如果明确指出一个变量/常量是属于哪种枚举类型的话, 可以直接.枚举值赋值, 否则就 枚举类型.枚举值
let month:Month = .January
var month1 = Month.January
month1 = .February
switch month{
case.January:
print("hashValue = \(month.hashValue), rawValue = \(month.rawValue)")
case.February:
print(month)
case.March:
print(month)
case.April:
print(month)
}”