close
範圍運算
  •      ==> 下界值 … 上界值
  • ..<     ==> 下界值 ..<上界值((不含)
 

區域變數

某語法 {
  這裡面有處理到”區域變數”
}
區域變數必須初始化(賦值) initilizde,否則,語法有可能失敗
 
 
*在C語言 char = int < 255
在swift語言, character != int   => Unicode Scalar = int
*! 保險:超過會給nil
 

跳脫字元 Escape Charactor

C語言以後,很多程式語言為了表示 0~31 中某些特殊字元用 \+ 一個既有字元的方式來表達,這便是跳脫字元
 

特殊變數

  1. nil  ==>  萬一沒有成功!沒值,系統會給出
  2. _     ==>  雞肋
 

條件型迴圈:

while 條件{
  若”條件”為真!則會進來{ } 執行
}  
每次執行完會重新再來一次(if 不會)
若”條件”為假!就離開往下繼續
 

亂數 Random

所謂”亂數”是指一系列前後完全找不到規則的數列
在程式設計中,機率賭奕AI人工智慧遊戲大數據...都會用到
各種語言都有其處理亂數的方式,swift 提供一組”亂數”指令 arc4random() 
注意!!用人腦出亂數不切實記得理由是:
  1. 不能在程式中自動化
  2. 人總有”行為模式
 
指令(參數)
指令(參數1,參數2,參數3...)
指令(參數修飾:參數)
 

集合 Collection

以某種規則聚合在一起的”量”,稱為集合
在swift中有三種規則的集合
  1. 陣列 - Array            ==>  同名,同型態,以索引區分
  2. 組合 - Set               ==>  同名,同型態,無秩序,值不能重複
  3. 字典 - Dictionary   ==>  同名,同型態,元素是以 (key - value 鍵-值) 對子的方式存在,無秩序
 
補充
一個不列在 swift collection 但也是聚合量的型態
雜堆 - Tuple => 隨便什麼,用 ( ) 擺起來就算一個結構
 
 
指令(參數1,參數2,參數3)  : 一般參數型態
指令(參數修飾子:參數) : 多了修飾子
 

Literal : 自然值 自然數

+=   ==>  加法指定運算子,把右邊的加進去後,值放到左邊
 
容器 <這裡面的型態可變化 呼叫enumerate 回傳一個新的容器> : 樣板  
 

“動態繫結成功判定”語法

Swift 結合 if 條件式 與 let常數宣告產生一種新的賦值是否成功的語法,
其語法如下:
if let 宣告一個常數 = 可能會失敗的賦值行為回傳 nil {
        如果賦值的動作成功!let 宣告的常數中便會裝著賦值並且判定true,進入此{ }內執行
}
 
 

集合類型 (Collection Types) 

 
 

Iterating Over an Array

 
for (index, value) in shoppingList.enumerated() {
                      集合.         指令(參數)
    print("Item \(index + 1): \(value)")
}
// Item 1: Six eggs
// Item 2: Milk
// Item 3: Flour
 
物件操作方法
1.物件.方法(參數) == 物件.指令(參數)  
2.物件.屬性
 
enumerated 列舉,重要的參數喔!(就是一堆東西)
shoppingList.enumerated() ,產生TUPLE供操作
 
 
 

Sets 集合

集合有.sorted()可用,陣列也可用
sort 印出的結果,bit 大的會排在前面。
 
 
 
 

Set Membership and Equality

 
isSubset(of:)
 
isSuperset(of:)` 
 
isStrictSubset(of:)` or isStrictSuperset(of:)` 
 
isDisjoint(with:)
 
let houseAnimals: Set = ["🐶", "🐱"]`
let farmAnimals: Set = ["🐮", "🐔", "🐑", "🐶", "🐱"]`
let cityAnimals: Set = ["🐦", "🐭"]
 
houseAnimals.isSubset(of: farmAnimals)`
// true
farmAnimals.isSuperset(of: houseAnimals)`
// true
farmAnimals.isDisjoint(with: cityAnimals)`
// true
 
動物符號是unicode 中的編碼
 
 
 
 

Dictionaries  字典

Dictionary<Key, Value>
[Key: Value]  // 此為首選寫法
 
 
 
 

Optional Value (變數值的保險)

()老師自己講的
 
基礎知識:在諸多電腦程式當機的原因中,最常發生的狀況是:物件型的變數還沒有內容(沒有賦值,也沒有建立,也沒有用工廠產生!)的時候去使用!(你可以想像成踩石頭過河,踩到懸空的石頭!)
Swift 為了讓程式強固不容易當掉,對於防止程式設計師耍笨、耍酷、耍XX…,採取了許多阻止、強迫的語法,其中針對物件型變數還沒有值之前就使用,使用了 Optional Value 語法技術
Optional Value 可以保證你的變數至少會有一個 nil 值。(所以(我個人)稱之為”保險”)
 

Optional Value 語法

  1. 在宣告變數時,在型態後面加 ?”
  • 例:
var 沒保險的變數型態
var X:Int
 
var 有保險的變數:型態?
var X:Int?
 
  1. 使用有保險的變數規則:
    1. 如果程式因為某種原因忘了給它賦值,那麼系統會自動給他一個nil (注意,這並不是正確的,但不會當!
    2. 如果程式有給 Optional Value 型式的變數賦值,那麼這個值會以一層薄薄的保護包起來,(印出來)看就像:
var X:Int?
X = 123
print(X)  ==>  Optional(123)  薄薄的保護層
 
注意!!123 與 Optional(123) 是不一樣的!!大部分的情況不能直接使用 Optional(123) ,若要取出 Optional 包裹的值,必須在 Optioal Value 後面加 !”
這樣
print(X!)  ==>  123
 
在比較簡單的命令列程式中, Swift 比較不會強迫要求程式設計師使用 Optional Value 技術!但在iOS手機程式與Mac OS X 視窗之類比較複雜的程式中,Swift 會強迫要求物件變數一定要有初值,那時就一定要使用 Optional Value 技術語法了。
 
“!” 加保險與 ?” 解除保險的概念(剝殼)
 
var xx:String
xx = readLine()!
if let x = Int(xx) {  
///因為Int(xx)這種轉型有可能出錯而沒有值可以交出去!(使用者輸入一個不能轉整數的字串)
/// if let  =  某Optional Value  ....語法的作用方式是:幫你的Optional Value剝殼(加!所以你不用再加了),如果能成功得到一個合法的值,那麼這個值就指定給let常數
///然後結果判定為true進入{}中去執行(我們就可以在{}中作一些一切都正常得的工作)
} else {
//幫你的Optional Value剝殼的動作失敗,表示這個賦值的動作失敗,系統會hold住不讓他當掉!但是判定為false
//如果你也想在失敗實作一些(補救),就可以加else
}
 
注意 ??
print(x ?? warning) ==> 不印 nil 改印 warning
 
(型)值  強制轉型  ==>  把”型”轉成”值”
 
 

Literals 自然數

位碼轉換

var x_decimal:Int = 123
var x_binary:Int = 0b01111011
var x_oct:Int = 0o173
var x_hex:Int = 0x7b
 
print(x_binary)
print(x_decimal)
print(x_oct)
print(x_hex)
 
 
 

Unicode

print("\u{2623}")
 

Operators 運算子

 
var x:Int
x = 0  //一定要初始化
x += 1  //指定運算子,自己加1
x += 5
 
print(x)
 

Bitwise Operators  ==>  比特(位元)運算子

位元  逐次  運算子
比特
直接進入記憶體,將量的位元組合取出來處理的運算子,,共有
&(且AND)、|(或OR)、^(斥XOR)、~(非NOT)四個  (注意不要與&&、||混淆了
例: 3 & 5 => 把3的位元組合與5的位元組合 逐次進行”且”運算
 
3的位元組合 =>  00000011     (你可以把1為真0為假)
5的位元組合 => 00000101   &且(and運算)
——————————————————------------------------
                             00000001     >1 這個位元組合轉為整數
 
 
 
 
<< Binary Left Shift Operator  
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
0
0
1
1
1
1
0
0
1
1
1
1
0
0
0
0
—>向左位移2位,乘4倍
 
 

Assignment Operators 指定運算子

 

Misc Operators 

 

Operators Precedence

 
 
三元運算子
語法:
條件 ? X:Y  
true回傳X, false回傳Y
ex. 5<3 ? X:Y   > Y
     5>3 ? X:Y   >X
     
 
 
 
 

函數 Function

將一段程式用特定的語法包裝起來成為一個可以重複(呼叫)使用的指令,這便是函數。
語法:
修飾字 func 函數名字(參數組合)->回傳值型態 {
        包裝的程式碼自己取
        }
 // 修飾字可不取       
func love10()->Void {
print("I Love U")
print("I Love U")
print("I Love U")
print("I Love U")
print("I Love U")
print("I Love U")
print("I Love U")
print("I Love U")
print("I Love U")
print("I Love U")
}
love10()
修飾字:說明函數的特性
func:函數宣告字
函數名字:自己取
參數組合:函數是宣告在()內的變數,專門提供{}內的程式碼用
回傳值型態:函數執行完後的結果值型態
func love_times(times:Int)->Void{
    for i in 1...times{
        print("I love you \(i)次")
    }
}
 
love_times(times: 10)
 
 

Utility 工具(實用)型的型態

作業:
  1. 閱讀 Date 文件
  2. 建立 DateFormatter 的格式
import Foundation
 
let times = Date()
let calendar = Calendar.current
 
let year = calendar.component(.year, from: times)
let month = calendar.component(.month, from: times)
let day = calendar.component(.day, from: times)
let hour = calendar.component(.hour, from: times)
let minutes = calendar.component(.minute, from: times)
let seconds = calendar.component(.second, from: times)
 
print("現在時間為 \(year)年\(month)月\(day)日 \(hour):\(minutes):\(seconds)")
 
/*
let date = NSDate()
var calendar = NSCalendar.current
print(calendar.dateComponents([.year, .month, .day, .hour, .minute], from: date as Date))
let unitFlags = Set<Calendar.Component>([.hour, .year, .minute])
calendar.timeZone = TimeZone(identifier: "Asia/Taipei")!
let components = calendar.dateComponents(unitFlags, from: date as Date)
 
print("All Components : \(components)")
 
let year = calendar.component(.year, from: date as Date)
let month = calendar.component(.month, from: date as Date)
let day = calendar.component(.day, from: date as Date)
let hour = calendar.component(.hour, from: date as Date)
let minutes = calendar.component(.minute, from: date as Date)
let seconds = calendar.component(.second, from: date as Date)
print("現在時間為 \(year)年\(month)月\(day)日  \(hour):\(minutes):\(seconds)")
*/
參考資料
 
arrow
arrow
    全站熱搜

    鋼鐵人 發表在 痞客邦 留言(0) 人氣()