形參不會(huì)改變實(shí)參的值

這個(gè)知識(shí)點(diǎn)很小,小到你每次讀它的時(shí)候都不會(huì)太以為然,不會(huì)太當(dāng)回事,然而,實(shí)際上編程時(shí)卻容易忘記或者忽略這個(gè)如此"簡(jiǎn)單"的知識(shí)點(diǎn)。

如果做一個(gè)簡(jiǎn)單的重試功能,就會(huì)用到一個(gè)while循環(huán),重試內(nèi)容的結(jié)果一般都是確定的,比如一直重試,直到重試內(nèi)容返回ok或者success為止,返回任何其他內(nèi)容都將繼續(xù)重試。

這個(gè)時(shí)候,你就在while循環(huán)外面聲明了一個(gè)變量,比如str='notok',接下來你會(huì)怎么做呢?把它當(dāng)作重試內(nèi)容函數(shù)的一個(gè)形參傳到函數(shù)里面去?然后用while(!str is 'ok')來判斷什么時(shí)候結(jié)束??那就大錯(cuò)特錯(cuò)了,原因就是如圖所示,形參值的改變并不能外部實(shí)參變量的值,那么就會(huì)死循環(huán)了(如果重試方法不拋運(yùn)行時(shí)異常的話)。

那么正確的方法應(yīng)該怎么寫呢?

1、外部聲明一個(gè)變量;(和前面討論的一樣)

2、我們不把這個(gè)變量當(dāng)作重試方法的形參,而是把函數(shù)方法的結(jié)果返回到外面來,即return出來;

3、這樣只有一個(gè)變量,就可以用上面的while條件判斷了。

附上一個(gè)彩蛋: 循環(huán)里面加個(gè)sleep,這樣的重試才不會(huì)把cpu占死,每循環(huán)一次,讓出來一會(huì)兒cpu。

圖片發(fā)自簡(jiǎn)書App

圖片發(fā)自簡(jiǎn)書App
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • __block和__weak修飾符的區(qū)別其實(shí)是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用,...
    LZM輪回閱讀 3,594評(píng)論 0 6
  • 1.寫一個(gè)NSString類的實(shí)現(xiàn) +(id)initWithCString:(c*****t char *)nu...
    韓七夏閱讀 3,873評(píng)論 2 37
  • 最近,第一次懷著敬畏的心情,看了《素年錦時(shí)》,安妮寶貝的書。好幾次看著看著,思想就恍惚了,不覺走入了自己的童年時(shí)光...
    我是農(nóng)民28閱讀 503評(píng)論 7 13
  • 昨天筆者介紹了一本書是7-Eleven創(chuàng)始人鈴木敏文先生的《零售的哲學(xué)》,而與這本書一起成套銷售的另一本書為《零售...
    孫凌聊校園閱讀 2,435評(píng)論 0 12
  • 夏天猶如人到中年 有點(diǎn)疲倦困乏和慵懶 青的不再新,綠的不再亮 時(shí)不時(shí)來一場(chǎng)驚天動(dòng)地的雷雨 讓人膽顫心驚,始料不及 ...
    丁_香閱讀 502評(píng)論 50 52

友情鏈接更多精彩內(nèi)容