Swift方法的簡寫

2021-07-09 16:41:19 字數 2622 閱讀 1427

首先舉個例子,乙個計算器,需要最基本的加減乘除運算,**如下

import foundation

//取運算元,假設已經取到如下

let op1 = 1.1;

let op2 = 2.2;

func operate(operation:nsstring)

}//處理運算

func performoperation(operation:(double, double) -> double)

//×func

multiply

(op1:double, op2:double) -> double

//÷func devide(op1:double, op2:double) -> double

//+func add(op1:double, op2:double) -> double

//-func subtract(op1:double, op2:double) -> double

乙個operate方法用來判斷運算子,乙個performoperation方法用來處理運算,四個運算方法加減乘除。

接下來我們來簡寫。

add方法體直接替換到operate方法中。

需要注意三點,

1.直接把函式名之後的從括號開始全部移走

2.左花括號提到函式左括號前面

3.在原來左花括號的位置加乙個單詞in

//step 1.直接把函式名之後的從括號開始全部移走 

func operate(operation:nsstring) )

...}

}

//step 2.左花括號提到函式左括號前面

func operate(operation:nsstring) )

...}

}

//step 3.在原來左花括號的位置加乙個單詞`in`

func operate(operation:nsstring) )

...}

}

現在的狀態是沒有紅色報錯的,並且改動處仍屬於一條語句。

因為swift最厲害的地方就是型別推斷,它可以通過上下文來推斷乙個變數的型別,所以根據上下文我們知道performoperation方法的引數為operation:(double, double) -> double,即乙個有兩個double型別作引數,返回乙個double型別的函式。

所以,我們可以把型別略掉,把返回型別去掉,箭頭也當然要去掉。(這個和lambda表示式有點類似)

func operate(operation:nsstring) )

...}

}

又因為swift知道裡面的表示式一定是返回乙個值,所以return也可以不需要

func operate(operation:nsstring) )

...}

}

這時有人突然跑來看你的**,覺得很奇怪,為什麼這裡好像是呼叫op1op2在做某事,但是你都沒有給他們定義呢(其實定義型別已經被我們略去了),那我們就乾脆引數名也略掉吧。

在swift中,會自動給引數順序命名$0,$1,$2…所以這裡也可以把op1op2替換成$0,$1,並且函式名也可以完全去掉了。

func operate(operation:nsstring) )

...}

}

和原來比簡直簡化到不能忍!!!

可以回到最前面看下原來的**,然後再看下下面簡化後的:

import foundation

//取運算元,假設已經取到如下

let op1 = 1.1;

let op2 = 2.2;

func operate(operation:nsstring) )

case

"-": performoperation()

case

"×": performoperation() //當引數為最後乙個引數時,可以放在外面

case

"÷": performoperation //如果只有它乙個引數,甚至可以不需要小括號

default: break

}}//處理運算

func performoperation(operation:(double, double) -> double)

細心的人注意到有個小小的變動,就是花括號剛好為performoperation最後乙個引數,所以花括號可以放在performoperation的右括號外面;而如果只有乙個引數的情況下,小括號可以去掉也沒關係。

if簡寫方法

第一種 if 條件語句 第二種 三目運算 第三種 組成的條件語句 第一種 if 不用講了,這是基礎,相信絕大多數人都會 第二種 c a b true false 意思是 如果a b 為真 則返回真,否則返回假 當然可以用語句替換 並且把結果返回給c 第三種 1 在大多數語言中,他的意思是並且的意思,...

邊框 border 的CSS簡寫方法

邊框 border 先介紹一下border的基本屬性 border width 數字 單位 border style none hidden dashed dotted double groove inset outset ridge solid border color 顏色 border可以按照...

有關判斷為空的簡寫方法

下面就是有關判斷為空的簡寫方法。如下 複製 如下 if variable1 null variable1 undefined variable1 上面的意思是說如果variable1不是乙個空物件,或者未定義,或者不等於空字串,那麼宣告乙個variable2變數,將variable1賦給variab...