日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

日发帖 发帖频率 发帖时段_先发帖

發布時間:2023/12/3 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 日发帖 发帖频率 发帖时段_先发帖 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

日發帖 發帖頻率 發帖時段

通常,我們編寫代碼來計算出一堆可用的答案。 讓我們來看一下Java中的情況。

public Widget getAppropriateWidget(CustomerRequest request) { if (shelfstock.contains(request.getBarcode()) { return new ShelfWidget(); } if (backroomStock.contains(request.getBarcode()) { return new BackroomWidget(); } if (supplier.contains(request.getEan()) { return new SupplierWidget(); } return null ; }

您將不得不想象更復雜的場景,隱藏在上面的簡化代碼后面。 該算法的作用是按優先級順序嘗試選項,直到找到有效的選項,否則將失敗,在這種情況下它將不返回任何內容。

我們還可以想象一下,由于某些原因,對contains的調用很昂貴–也許每個對象都隱藏了一個Web服務或復雜的數據庫查詢。

讓我們以兩種方式重構上面的代碼開始。 讓我們使用Optional ,讓它為每個方法使用子例程。

public Optional<Widget> getAppropriateWidget(CustomerRequest request) { Optional<Widget> shelfWidget = getShelfWidget(request); if (shelfWidget.isPresent()) { return shelfWidget; } Optional<Widget> backroomWidget = getBackroomWidget(request); if (backroomWidget.isPresent()) { return backroomWidget; } Optional<Widget> supplierWidget = getSupplierWidget(request); if (supplierWidget.isPresent()) { return supplierWidget; } return Optional.empty; } // imagine the subsidiary functions

所以,這是有點優于的null是不發現的回報,正努力使用子程序,使這個功能描述了自身,但它具有與每個的事實麻煩Optional返回的對象不能被鏈接到一個責任鏈。

我們可以作弊:

Optional<Widget> shelfWidget = getShelfWidget(request); Optional<Widget> backroomWidget = getBackroomWidget(request); Optional<Widget> supplierWidget = getSupplierWidget(request); return firstNonEmpty(shelfWidget, backroomWidget, supplierWidget); private static Optional<Widget> firstNonEmpty( Optional<Widget> ... options) { return Arrays.stream(options) .filter(Optional::isPresent) .findFirst() // makes an optional of optional here... .orElse(Optional.empty()); }

上面的代碼更好一些,但是現在必須在選擇一個答案之前預先計算所有可能的答案。 如果答案很快就會出現,我們就需要避免成本高昂的期權計算。

帶有可選解決方案的第一個過去的帖子

將流或varargs數組傳遞給一個函數,該函數由將提供可選值的對象組成。 如果它們中的任何一個提供非空值,則獲勝。

// calling code public Optional<Widget> getAppropriateWidget(CustomerRequest request) { return firstAvailable(() -> getShelfWidget(request), () -> getBackroomWidget(request), () -> getSupplierWidget(request)); } // this is a general purpose solution // feel free to use it @SafeVarargs private static <T> Optional<T> firstAvailable( Supplier<Optional<T>> ... options) { return Arrays.stream(options) .map(Supplier::get) .filter(Optional::isPresent) .findFirst() .orElse(Optional.empty()); }

翻譯自: https://www.javacodegeeks.com/2019/11/first-past-the-post.html

日發帖 發帖頻率 發帖時段

總結

以上是生活随笔為你收集整理的日发帖 发帖频率 发帖时段_先发帖的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。