亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        使用Swift構(gòu)建應(yīng)用程序在實(shí)踐教學(xué)中的應(yīng)用

        2018-12-06 06:17:40鎮(zhèn)江技師學(xué)院李佳琳黃向東
        電子世界 2018年22期
        關(guān)鍵詞:樞軸游樂(lè)等待時(shí)間

        鎮(zhèn)江技師學(xué)院 李佳琳 黃向東

        本文將著重探討Swift中涵蓋高級(jí)FP的使用,因此通過(guò)現(xiàn)實(shí)世界情況來(lái)思考這些概念,將會(huì)在教學(xué)中對(duì)學(xué)生學(xué)習(xí)Swift有所幫助。在這種情況下,假設(shè)正在構(gòu)建一個(gè)游樂(lè)園的應(yīng)用程序,并且該公園的乘坐數(shù)據(jù)由遠(yuǎn)程服務(wù)器上的API提供。在Xcode中創(chuàng)建一個(gè)新的playground。

        首先將以下內(nèi)容添加到playground:

        通過(guò)更改變量,可以創(chuàng)建可變狀態(tài)。單獨(dú)或在相對(duì)簡(jiǎn)單的系統(tǒng)中,可變狀態(tài)不是什么大的問(wèn)題。但是,當(dāng)將許多對(duì)象連接在一起時(shí),例如在大型面向?qū)ο笙到y(tǒng)中,可變狀態(tài)會(huì)產(chǎn)生許多令人頭疼的問(wèn)題。例如,當(dāng)兩個(gè)或多個(gè)線程訪問(wèn)相同的變量同時(shí),它們可能會(huì)修改或訪問(wèn)失靈,導(dǎo)致意外行為的發(fā)生。這包括競(jìng)爭(zhēng)條件、死鎖和許多其他問(wèn)題。想象一下,如果你可以編寫狀態(tài)永遠(yuǎn)不會(huì)發(fā)生變化的代碼。并發(fā)系統(tǒng)中出現(xiàn)的一大堆問(wèn)題就會(huì)消失??梢酝ㄟ^(guò)創(chuàng)建不可變狀態(tài)來(lái)執(zhí)行此操作,因此不允許在程序過(guò)程中更改數(shù)據(jù)。使用不可變數(shù)據(jù)的主要好處是:使用它的代碼單元沒(méi)有副作用,這意味著代碼中的函數(shù)不會(huì)改變自身之外的元素,并且在函數(shù)調(diào)用發(fā)生時(shí)不會(huì)出現(xiàn)任何怪異的效果。在本文中使用的主要數(shù)據(jù)是一個(gè)不可變的Swift常量時(shí)會(huì)發(fā)生什么。

        要討論的最后一個(gè)概念是遞歸,只要函數(shù)將自身稱為其函數(shù)體的一部分,就會(huì)發(fā)生遞歸。在函數(shù)式語(yǔ)言中,遞歸有效地替換了命令式語(yǔ)言中使用的循環(huán)結(jié)構(gòu)。當(dāng)函數(shù)的輸入導(dǎo)致再次調(diào)用函數(shù)時(shí),這被認(rèn)為是遞歸情況。為了避免無(wú)限的函數(shù)調(diào)用堆棧,遞歸函數(shù)需要一個(gè)基本案例來(lái)結(jié)束它們。讓我們?yōu)槟挠螛?lè)設(shè)施添加遞歸排序功能。

        如果等待時(shí)間較短,認(rèn)為一次乘坐比另一次乘坐少,如果乘坐的名稱相同,認(rèn)為它們相等?,F(xiàn)在,擴(kuò)展Array到包含一個(gè)quick-Sorted方法:

        該算法首先選擇一個(gè)樞軸元素。然后將收藏分為兩部分;一部分保持所有小于或等于樞軸的元素,另一部分保持剩余元素大于樞軸。然后使用遞歸對(duì)兩部分進(jìn)行排序。請(qǐng)注意,通過(guò)使用遞歸,不需要可變狀態(tài)。使用如下代碼驗(yàn)證功能:

        第二行確認(rèn)quickSorted沒(méi)有修改傳入的數(shù)組。要記住的一件事是,遞歸函數(shù)確實(shí)有一些額外的內(nèi)存(堆棧)使用和運(yùn)行時(shí)開(kāi)銷,但是它們通常比它們更混亂的命令式對(duì)應(yīng)物更優(yōu)雅,并且這不應(yīng)該是較小數(shù)據(jù)集的問(wèn)題。

        通過(guò)考慮以下問(wèn)題,可以將在此學(xué)到的大部分內(nèi)容與FP相結(jié)合,并清楚地展示函數(shù)式編程的一些優(yōu)點(diǎn)。一個(gè)有小孩的家庭希望在休息之后盡可能多地游玩,所以他們需要找到哪些適合兒童的游樂(lè)設(shè)施有最短的線路。通過(guò)等待時(shí)間少于20分鐘的所有家庭游樂(lè)設(shè)施幫助他們,并按等待時(shí)間(升序)對(duì)其進(jìn)行排序。

        如上所寫,命令式代碼很好,但快速瀏覽并不是很清楚,直接地了解它正在做什么。必須暫停以詳細(xì)查看算法才能掌握它。如果回來(lái)做一些維護(hù),調(diào)試或者將其交給新開(kāi)發(fā)人員怎么辦?FP可以做得更好。生成的代碼是聲明性的,這意味著它是自我解釋的,并且讀起來(lái)就像它解決的問(wèn)題陳述。這與命令式代碼不同,命令式代碼類似于計(jì)算機(jī)必須采取的步驟來(lái)解決問(wèn)題陳述。

        通過(guò)以上實(shí)例,可以更清晰地使學(xué)生懂得,Swift不是一種純函數(shù)式語(yǔ)言,但它結(jié)合了多種編程范例,為提供應(yīng)用程序開(kāi)發(fā)的靈活性。開(kāi)始使用FP技術(shù)的好地方是在Model層,ViewModel層以及應(yīng)用程序的業(yè)務(wù)邏輯出現(xiàn)的任何位置。對(duì)于用戶界面,使用FP技術(shù)的地方不太清楚。反應(yīng)式編程是用于UI開(kāi)發(fā)的類似FP的方法的示例。例如,RxSwift是用于iOS和macOS編程的反應(yīng)庫(kù)。通過(guò)采用功能性的聲明式方法,的代碼可以更簡(jiǎn)潔明了。同樣,當(dāng)?shù)拇a被隔離到?jīng)]有副作用的模塊化功能時(shí),的代碼將更容易測(cè)試。最后,隨著多處理核心成為CPU和GPU的標(biāo)準(zhǔn),最小化副作用和并發(fā)問(wèn)題將變得越來(lái)越重要,F(xiàn)P將是實(shí)現(xiàn)平穩(wěn)性能的最重要方式之一!

        猜你喜歡
        樞軸游樂(lè)等待時(shí)間
        WK-35 電鏟中央樞軸液氮冷裝工藝研究
        給學(xué)生適宜的等待時(shí)間
        ——國(guó)外課堂互動(dòng)等待時(shí)間研究的現(xiàn)狀與啟示
        面向神經(jīng)機(jī)器翻譯的樞軸方法研究綜述
        探討參數(shù)區(qū)間估計(jì)中樞軸量的選取——以單個(gè)正態(tài)總體均值為例
        冬奧游樂(lè)會(huì)
        動(dòng)物游樂(lè)匯
        景觀文化展示森林公園游樂(lè)魅力
        音樂(lè)游戲玩起來(lái)
        ——新春游樂(lè)匯
        琴童(2016年2期)2017-01-17 00:52:13
        意大利:反腐敗沒(méi)有等待時(shí)間
        公民與法治(2016年2期)2016-05-17 04:08:28
        抽水蓄能電站球閥樞軸軸套故障分析及改造
        少妇久久久久久被弄到高潮| 久久九九精品国产不卡一区| 日本最新一区二区三区在线视频| 性做久久久久久久| 国产一起色一起爱| 精品无码人妻久久久一区二区三区| 亚洲无人区乱码中文字幕动画| 无码乱肉视频免费大全合集| 色婷婷综合久久久久中文| 午夜国产一区二区三区精品不卡| 亚洲最大视频一区二区三区| 亚洲国产精品无码成人片久久| 亚洲色欲久久久综合网| 色爱无码A V 综合区| 一区二区三区日本美女视频 | 日韩在线手机专区av| 精品国产三级a在线观看不卡| 亚洲欧美精品suv| 不卡高清av手机在线观看| 亚洲在线一区二区三区| 日韩少妇人妻中文字幕| 国产精品对白刺激久久久| 无码一区久久久久久久绯色AV| 国产超碰在线91观看| 精品综合久久久久久888蜜芽| 国产香蕉97碰碰视频va碰碰看| 91精品在线免费| 美女视频在线观看网址大全| 人与禽性视频77777| 正在播放亚洲一区| 久久狠狠髙潮曰十八女人| 久久精品99国产精品日本| 成人做爰视频www| 国产强伦姧在线观看| 亚洲综合中文字幕日韩| 欧美亚洲熟妇一区二区三区| 国产欧美久久久另类精品| 精品国产亚洲av久一区二区三区| 无码av中文一区二区三区| 亚洲a∨无码一区二区| 日本av在线精品视频|