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)