版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。
/
// copyright (c) 2015年 韓俊強. all rights reserved.
//
import foundation
// swift當中的輸出函數
// println swift2.0 之前使用的輸出函數, 可以自動換行
// print swift2.0之前自動換行, swift2.0之後可以自動換行
println("hello, world!")
// 單行注釋和以前一樣
// 塊注釋
/*
塊注釋
/*
可以嵌套注釋
*/
*/
// 如何聲明一個常量 規則: let 常量名: 類型 = 值
// swift當中我們不必再代碼語句的結尾處加分号, 但是如果一行中寫了幾句代碼, 那麼代碼之間就要用分号隔開
let a: int = 5; let b: int = 10
// 如何聲明一個變量 var 變量名: 類型 = 值
// character 字元型
var c: character = "a"
println(c)
// 常量的值不可以發生改變, 變量的值可以改變
// a = 10 錯誤
c = "b"
// 命名規則
// 我們可以使用大部分的特殊符号, 中文也可以, 數字, 字母, 下劃線, 但是非法的unicode編碼, 數字元号, 标志符是不可以的
let 小韓哥: string = "好帥"
<pre name="code" class="plain">// 類型推斷
// swift 會根據我們給常量或者變量賦的值來推斷我們常量或者變量的類型
let 常量 = 10 // 根據推斷: 常量是int類型
var 變量 = 20 // 變量是一個int 類型
// swift是一門類型安全的語言, 我們不能給一個類型的變量賦給另一個類型
// 變量 = 19.5 錯誤
變量 = 30
println(變量)
// 數值字面量
// 20, 10 , 字元串
// 0b
//let ab = 1011
//println(ab)
let ab = 0b1010
println(ab)
// 八進制值字面量
let ac = 0o17
println(ac)
// 十進制字面量, 預設的數組就是十進制
let ad = 18
// 十六進制字面量 0x 開頭
let ae = 0xabc
println(ae)
// 字元串插值
// swift當中沒有占位符, 我們可以以字元串插值的形式當做占位符 \(), 括号中存放常量或者變量的名字
let af = "hello,wold"
println("af = \(af)")
// 類型轉換
let 浮點型: float = 15.9
let 整型: int = 20
// 不同類型不可以直接做運算
// 浮點型轉化成int類型 int()
// int類型轉化為浮點型 float()
let result = int(浮點型) + 整型
// 列印最大值, 最小值
println(int8.max)
println(int16.min)
println(uint8.max)
println(uint8.min)
// 類型别名的使用
typealias newint32 = int32;
println(newint32.max)
// 布爾值 隻有true false
var 布爾值 = true
println(布爾值)
布爾值 = false
// 元組
// 多個不同類型的值組合成的一個複合值
let 元組 = ("小明",28,95.5);
// 取出元組裡面的值
// 通過元組名. 下标的形式取出元組的内容
println(元組.0)
println(元組.2)
// 如果我們聲明元組的時候,給元組裡面的内容前加一個名字, 那麼我們就可以通過 元組名.元素名字 的方式取出元組裡面的内容
let 小韓 = (身高: 170,年齡:25 )
println(小韓.身高,小韓.年齡)
// 元組的分解
let (身高,年齡) = 小韓
println(身高,年齡)
// 可選類型
// 可選類型是用來處理值缺失的情況, 一個變量聲明成可選類型的話, 證明這個變量可能有值,也可能未空
// 聲明一個可選類型
var str: string?
println(str)
str = "hello,good morning"
// 我們要使用可選類型變量值的話,需要把可選類型裡面的值解析出來, 方式:變量名 + ! ,這種方式叫做強制解析
var astr = "95588"
var aintofoptinal = astr.toint()
println(aintofoptinal)
// 強制解析之前我們要確定變量有值, 如果沒有值, 我們不能在可選類型後面 + !來強制解析
var result1 = aintofoptinal! + 10
println(result1)
// 隐式解析類型
// 為了我們使用可選類型的時候, 不用發每次都用強制解析的方式取值, 我們可以在聲明變量的時候在類型标注後面不用? 而用!的形式
// for example
var 隐式解析類型: int!
println(隐式解析類型)
隐式解析類型 = 20;
// 斷言
// 起到斷點調試的作用
var bstr: string?
bstr = "忘指派了"
assert(bstr != nil, "字元串不為空")
println(bstr!)
// 運算符
// 根據操作數的不同, 運算符可以分為一進制, 二進制, 三元運算符
// + - * / %
// +
let a = 3; let b = 5
var c = a + b
println("c = \(c)")
// -
c = b - a
// *
c = a * b
// /
c = b / a
// %
c = a % b
// 自增, 自減運算
// ++
var anumber = 10
// ++ 在前取新值, ++ 在後取舊址 , 不管++在變量的前面, 還是在變量的後面, 該變量都會自增1
let result = ++anumber + anumber++ + ++anumber
println("result = \(result)")
println(anumber++)
// --
let result2 = --anumber - anumber-- + --anumber
println(--anumber)
println(result2)
// 複合運算符
// += -= /= %=
// +=
var 變量 = 10
變量 += 5 // 變量 = 變量 + 5
// -=
變量 -= 5
// /=
變量 /= 2
// %=
變量 %= 1
// 三目運算符 條件 ? 值1 : 值2 條件為真的時候取值1, 條件為假的時候取值2
let maxnumber = 5; let minnumber = 3
let result3 = maxnumber > minnumber ? maxnumber : minnumber
println(result3)
// 比較運算符 >, < , <= , >= ,== , !=
if maxnumber > minnumber {
println( "\(maxnumber) 比 \(minnumber) 大")
}
if maxnumber < minnumber {
println("\(maxnumber) 比 \(minnumber) 小")
if maxnumber <= minnumber {
println("\(maxnumber) 不比 \(minnumber) 大")
if maxnumber >= minnumber {
println("\(maxnumber) 不比 \(minnumber) 小")
if maxnumber != minnumber {
println("\(maxnumber) 不等于 \(minnumber) ")
if maxnumber == minnumber {
println("\(maxnumber) 等于 \(minnumber)")
// 邏輯運算符, 邏輯與 &&, 邏輯或 || , 邏輯非 !
// 注意 邏輯與 邏輯或 的短路現象
// 邏輯與 運算符前面條件為假, 運算符後面的語句就不走(一假即真)
// 邏輯或 運算符前面條件為真, 運算符後面的語句就不走(一真即真)
// 邏輯非 取反
var num = 10
if num++ == 10 || num-- > 0 {
println(num)
// 空合運算符 ??
var str = "123"
var num3 = str.toint()
// 判斷一個可選類型, 如果為空,就給一個常量指派 567, 如果不為空, 就取這個可選類型變量解析出來的值
// 等價于
if num3 == nil {
let result = 567
println(result)
} else {
let result = num3!
let result4 = num3 == nil ? 567 : num3!
println(result4)
let result5 = num3 ?? 567
println(result5)
// 區間運算符
// (a...b) 包含 a 到 b 範圍内的數, 且包含 a 和 b
// (a..<b) 包含 a 到 b 範圍的數, 包含 a 不包含 b
for 數字 in (1...9) {
println(數字)
for number in (1..<9) {
println(number)
// 字元串
// 在swift當中沒有可變字元串與不可變字元串之分, 字元串的可變與不可變隻有我們用let. 還是var 來修飾有關, 如果let修飾,那麼字元串不可變, var 修飾,這個字元串就可變
var str = "hello,word"
// 周遊字元串中的每個字元
for 字元 in str {
println(字元)
// 字元串的拼接, 我們可以直接通過運算拼接字元串
str += " = 你好世界!"
// 這種方式隻能拼接一個字元, 并且字元的位置在字元串的最後
let charactor : character = "啊"
str.append(charactor)
// 判斷字元串是否有前字尾
let astr = "meinv.png"
if astr.hasprefix("meinv") {
println("有字首meinv")
}else{
println("沒有字首")
// 判斷字元串是否有字尾
if astr.hassuffix(".png") {
println("png格式")
println("其他格式")
// 判斷字元串是否為空
if astr.isempty {
println("字元串為空")
println("字元串不為空")
// 全部大寫
let resultofstr = astr.uppercasestring
println(resultofstr)
// 全部小寫
let resultofstr1 = astr.lowercasestring
println(resultofstr1)
// 首字母大寫
let resultofstr2 = astr.capitalizedstring
println(resultofstr2)
// oc裡面的字元串
let bstr : nsstring = "hello"
let resultofstr3 = bstr.length
println(resultofstr3)
// 數組
// 通過構造方法來建立一個空數組
var array : array<string> = array()
// 第二種
var array1 = [int]()
// 第三種
var array2 : [string] = array()
// oc裡面建立數組
var array3 = nsarray()
var arrayofbook = ["金瓶梅","玉女心經","玉蒲團","一路向西"]
// 修改數組中的元素
arrayofbook[3] = "西遊記"
for element in arrayofbook {
println(element)
// 另一種方式
for (index,value) in enumerate(arrayofbook){
println((index,value))
// swift2.0之後寫法 點文法
//for (不知道,不知道2) in arrayofbook.enumerate{
// println((不知道,不知道2))
//}
arrayofbook[0...2] = ["三國演義","水浒傳","紅樓夢","通訊錄"]
println(element)
// 插入元素
arrayofbook.insert("射雕英雄傳", atindex: 0)
// 删除元素
arrayofbook.removelast()
println(arrayofbook.capacity)
// 删除所有元素
// keepcapacity表示是否保持容量,如果參數為true的話, 同時把元素清為零,但是保留清空之前的空間, 如果參數為false 的話, 清空元素後每添加一個元素時,空間不夠用時,會開辟添加上一次元素空間的2倍
arrayofbook.removeall(keepcapacity: false)
// 判斷數組是否為空
if arrayofbook.isempty {
println(arrayofbook.capacity)
arrayofbook.insert("text", atindex: 0)
println(arrayofbook.capacity)
// 字典
// c語言的建立一個空字典方式
var dict : dictionary<int, int> = dictionary()
var dict2 : [string : string] = dictionary()
// oc的形式
var dict3 = nsdictionary()
var studentofdict = ["name" : "小明","age" : 18]
// 周遊子典裡面的所有的key
for key in studentofdict.keys {
println(key)
// 周遊字典裡所有的value
for value in studentofdict.values{
println(value)
// 給字典添加一個元素
studentofdict["adress"] = "天下第一樓"
println(studentofdict)
// 删除一個元素
studentofdict.removevalueforkey("adress")
studentofdict["age"] = nil
// 周遊字典裡面的key和value
for (key,value) in studentofdict {
println((key,value))
原文位址:http://blog.csdn.net/qq_31810357/article/details/50032053