Swift-基礎語法

Swift basic

= 為賦值的意思

var greeting1 = "Hello, playground"

print列印訊息到 console 裡,也可以用來觀察程式碼是否有執行。

print("Hello, playground!")

尾巴不用加分號

使用型別推測機制來宣告常數及變數

var 宣告一塊可變動的記憶體配置空間,但此空間較為耗用記憶體。

// 用var宣告變數(Int型別)
var myVariable = 42 

myVariable = 50556667777    

// String型別
myVariable = "TEST"     

//  Double型別
myVariable = 12.34      

//推測為Double型別(型別推測只會推測為Double型別,不會推測為Float型別)
var implicitDouble = 70.0   

let 宣告一塊不可變動的記憶體配置空間,此空間較節省記憶體

//用let宣告常數(但常數經過第一次設值之後就不得變動)
let myConstant = 39         
myConstant = 50     
//error:Cannot assign to value: 'myConstant' is a 'let' constant      

宣告常數及變數時明確指定型別

//明確宣告一塊Double常數的記憶體配置空間(但此時還未真正配置出記憶體)
let explicitDouble:Double       
explicitDouble = 70     //當第一次為常數設值時,才會真正配置出記憶體

【練習1】宣告一個常數,明確指定型別Float,並指定其值為4

//Float型別小數只有六位,多餘的小數位數會五捨六入
let explicitFloat:Float = 3.1234566     
print(explicitFloat)

自行測試:宣告明確型別的變數

var explicitInt:Int8
explicitInt = -128      //Int8只能存放-128~+127
Int8.max                //確認Int8型別的最大值
Int8.min                //確認Int8型別的最小值
Int.max
Int.min

Swift不會自動轉型

var anotherExplicitInt:Int
anotherExplicitInt = 888
//anotherExplicitInt = 888.88     //error:Cannot assign value of type 'Double' to type 'Int'
//anotherExplicitInt = explicitInt  //error:Cannot assign value of type 'Int8' to type 'Int'
anotherExplicitInt = Int(explicitInt)   //只要型別不符,必須自行操作轉型

沒有隱含的型別轉換,不同型別必須自己轉型,才能操作運算

let label = "The width is "     //String型別
let width = 94                  //Int型別

//因為+前後皆為String型別,此時+為字串串接
let widthLabel = label + String(width) 

print(widthLabel)
//"The width is "+"94"

【練習2】試著移除上面最後一行轉換為字串型別的語法,你會看到什麼錯誤?

//Binary operator(運算符號/運算子) '+' cannot be applied to operands(運算元素) of type 'String' and 'Int'

//有更簡便的方法來執行字串中文字的插入,使用\()語法也可以執行計算式
let apples = 3
let oranges = 5

//因為+前後皆為Int型別,此時+為整數相加
let summary = apples + oranges

let appleSummary = "I have \(apples) apples."
print(appleSummary)

let fruitSummary = "I have \(apples + oranges) pieces of fruit."
print(fruitSummary)

【 練習3 】

使用()來執行浮點數的運算,其中包含跟某人的問候訊息。
浮點數的運算:計算BMI~體重(公斤)/ 身高平方(公尺)
程式中的加減乘除:+ - * /(取商數) %(取餘數)

 
let myWeight:Float = 62.0
let myHeight:Float = 1.67
let name = "Perkin"
print("\(name),你的BMI:\(myWeight/(myHeight*myHeight))")

String(format: "%@,你的BMI:%.2f",name,myWeight/(myHeight*myHeight))
//parameter:參數
//argument:引數

//以三個雙引號(""")來標示字串,字串的中間即可以保留換行和單引號(")的呈現
let quotation = """
I said "I have \(apples) apples."
And then I said "I have \(apples + oranges) pieces of fruit."
"""

//error:三個引號的字串不適用於print
//print("""\(name),你的BMI:\(myWeight/(myHeight*myHeight))""")
print(quotation)