成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iOS開發指南:與YOLOKit共度好時光

譯文
移動開發 Android
大家應該在確保YOLOKit能夠為項目帶來理想價值的情況下加以使用。我們還需要意識到自己的選擇會迫使同事學習并適應YOLOKit的語法習慣。我認為YOLOKit是個了不起的項目,這一點已經在Objective-C實際效果中表現得淋漓盡致。就我個人而言,這也是我從YOLOKit身上學到的最寶貴的財富。

【51CTO譯文】要對Objective-C中的集合進行列舉,過程往往既冗長又笨拙。如果大家曾經用過Ruby或者JavaScript當中的Underscore或者Lo-Dash,肯定知道這類的任務還擁有更好的解決辦法。YOLOKit正是應這一需求而產生,其創造者希望借助這套精致的庫為用戶排憂解難。YOLOKit的口號是“以輕松的方式搞定列舉難題”,它也的確做到了這一點。

1、安裝

大家可以利用CocoaPods輕松將YOLOKit添加到Xcode項目當中。只要將該pod加入到開發項目的Podfile,通過命令行運行pod update,然后將YOLO.h導入到我們希望使用YOLOKit的位置即可。

如果大家不打算使用CocoaPods,也可以直接從GitHub中下載這套庫,將相關文件添加到項目當中然后導入YOLOKit標頭。

2、使用YOLOKit

YOLOKit提供大量實用功能,但出于篇幅考慮,我們將專注于探討YOLOKit中的一部分辦法。

最小與***

讓我們先從簡單的問題著手,看看如何從一個數組中提取出最小與***的數值。請大家閱讀以下代碼片段來理解它的運作過程。

  1. NSArray *numbers = @[ @(1), @(2), @(45), @(-12), @(3.14), @(384) ]; 
  2.   
  3. // Minimum 
  4. id min = numbers.min(^(NSNumber *n) { 
  5.     return n.intValue; 
  6. }); 
  7.   
  8. id max = numbers.max(^(NSNumber *n) { 
  9.     return n.intValue; 
  10. }); 
  11.  
  12. NSLog(@"\nMIN %@\nMAX %@", min, max); 

上述代碼片段的執行結果如下所示。

  1. MIN -12 
  2. MAX 384 

這部分語法看起來可能有點奇怪,大家也許會想為什么要將min與max構成一個block,但事實上這種作法能帶來更多強大的功能。大家可以在block中添加任何內容,從而檢測該數組中的最小與***值分別是什么。下面的示例應該足以打消大家的疑惑。

  1. NSArray *words = @[ @"this", @"is", @"a", @"example", @"for", @"everyone" ]; 
  2. // Minimum 
  3. id shortest = words.min(^(NSString *n) { 
  4.     return (NSInteger)n.length; 
  5. }); 
  6.   
  7. id longest = words.max(^(NSString *n) { 
  8.     return (NSInteger)n.length; 
  9. }); 
  10.   
  11. NSLog(@"\nSHORTEST %@\nLONGEST  %@", shortest, longest); 

This code snippet results in the following output.

  1. SHORTEST a 
  2. LONGEST  everyone 

YOLOKit非常靈活而且不會對block參數的類型作出任何要求。不過為了照顧到編譯器的需要,我們需要將block的返回值交給NSInteger。

過濾數組

選擇&拒絕

對數組進行過濾的方法有很多,其中包括select與reject。下面讓我們一起來看如何對之前創建的數組進行數字與單詞過濾。

  1. NSArray *filteredNumbers = numbers.select(^(NSNumber *n) { 
  2.     return n.intValue > 10; 
  3. }); 
  4.   
  5. NSLog(@"FILTERED NUMBERS\n%@", filteredNumbers); 
  6.   
  7. NSArray *filteredWords = words.reject(^(NSString *n) { 
  8.     return n.length <= 2; 
  9. }); 
  10.   
  11. NSLog(@"FILTERED WORDS\n%@", filteredWords); 

大家必須要承認,上述代碼看起來非常出彩——可以說既簡潔又清晰。在前面的例子中,數組內容相比比較簡單,但請注意,大家完全可以使用復雜程度遠高于此的數組。下面這個例子能夠證明這一點。

  1. NSArray *people = @[ person1, person2, person3, person4, person5, person6 ]; 
  2.   
  3. NSArray *males = people.select(^(Person *p) { 
  4.     return p.sex == 0; 
  5. }); 
  6.   
  7. NSArray *females = people.reject(^(Person *p) { 
  8.     return p.sex == 0; 
  9. }); 

子數組

YOLOKit還定義了first與last,不過它們的實際作用與大家的預期并不一樣。換句話來說,它們并不等同于NSArray當中的firstObject與lastObject方法。在first與last的幫助下,大家可以在原始數組當中創建子數組,具體請看以下示例。

  1. NSArray *subsetNumbers = numbers.first(3); 
  2. NSArray *subsetWords = words.last(2); 
  3.       
  4. NSLog(@"SUBSET NUMBERS\n%@", subsetNumbers); 
  5. NSLog(@"SUBSET WORDS\n%@", subsetWords); 

上述代碼片段經過執行會得出以下輸出結果。

  1. SUBSET NUMBERS 
  2.     1, 
  3.     2, 
  4.     45 
  5. SUBSET WORDS 
  6.     for
  7.     everyone 

操作數組

數字排序

對數組進行排序在YOLOKit眼中可謂小菜一碟。讓我們看看它如何對之前創建的數組進行數字排序。輕松如斯:

  1. NSArray *sortedNumbers = numbers.sort; 
  2.       
  3. NSLog(@"%@", sortedNumbers); 

獨特內容過濾

使用NSSet的好處之一在于它不會包含重復對象。不過對對象數組進行獨特內容過濾對YOLOKit同樣是輕松愉快。讓我們利用YOLOKit的concat方法添加一些額外數字,然后利用uniq對該數組進行獨特內容過濾。

  1. // Concatenate 
  2. numbers = numbers.concat(@[@1, @2, @3, @4]); 
  3.   
  4. NSLog(@"CONCAT %@", numbers); 
  5.   
  6. // Unique & Sort 
  7. numbers = numbers.uniq.sort; 
  8.   
  9. NSLog(@"UNIQ %@", numbers); 

不知道大家是否注意到了,我利用uniq與sort在進行獨特內容過濾的同時還完成了排序工作。我們的目標并不是要將Objective-C代碼轉換成Ruby或者JavaScript形式,但可以肯定大家也感受到了上述代碼片段的簡潔性以及閱讀方面的便利性。

逆向與改組

  1. // Reversing 
  2. NSArray *reversedNumbers = numbers.reverse; 
  3.       
  4. // Shuffling 
  5. NSArray *shuffledWords = words.shuffle; 
  6.       
  7. NSLog(@"REVERSED\n%@", reversedNumbers); 
  8. NSLog(@"SHUFFLED\n%@", shuffledWords); 

以上代碼片段執行后的輸出結果如下所示。

  1. REVERSED 
  2.     384, 
  3.     "3.14"
  4.     "-12"
  5.     45, 
  6.     2, 
  7.     1 
  8. SHUFFLED 
  9.     for
  10.     is, 
  11.     everyone, 
  12.     example, 
  13.     a, 
  14.     this 

其它方法

能夠用于處理數組的方法還有很多,其中包括rotate、sample、without、set以及transpose等等。我建議大家點擊此處查看GitHub網站上的YOLOKit專區以了解更多細節信息。

其中一些方法還能夠與NSDictionary、NSNumber以及NSString共同使用。以下代碼片段顯示的就是我們要如何將字符串轉換成單詞數組。

  1. id wordsInString = @"You only live once. Right?".split(@" "); 
  2.   
  3. NSLog(@"STRING %@", wordsInString);
  1. STRING ( 
  2.     You, 
  3.     only, 
  4.     live, 
  5.     "once."
  6.     "Right?" 

3、注意事項

代碼完成情況

由于YOLOKit的語法比較怪異,因此Xcode對與之相關的代碼完成情況其實幫不上什么大忙。它會為我們提供一份關于YOLOKit的方法建議清單,但也就僅此而已了。如果大家打算使用YOLOKit,必須首先認真學習其語法構成。

性能表現

大家可以在GitHub提供的實例(點擊此處)中看到,YOLOKit并沒有針對性能表現進行過優化。不過它確實能讓我們的代碼更漂亮也更具可讀性。請大家務必記住,使用for循環對數組進行循環遍歷能夠帶來比YOLOKit方法更快、更理想的性能表現。

總結

那么我是否推薦大家使用YOLOKit呢?既是也不是。前面提到的幾點負面因素不應該成為大家拒絕使用YOLOKit的理由,不過請確保在使用YOLOKit之前認真考慮到性能表現的重要性,特別是在有其它更好選擇的情況下——例如出色的for循環。

長話短說,大家應該在確保YOLOKit能夠為項目帶來理想價值的情況下加以使用。此外,我們還需要意識到自己的選擇會迫使同事學習并適應YOLOKit的語法習慣。我認為YOLOKit是個了不起的項目,這一點已經在Objective-C實際效果中表現得***。就我個人而言,這也是我從YOLOKit身上學到的最寶貴的財富。

原文鏈接:

http://code.tutsplus.com/tutorials/having-fun-with-yolokit--cms-21277

原文標題:Having Fun with YOLOKit

核子可樂譯

責任編輯:閆佳明 來源: 51CTO
相關推薦

2011-03-02 08:35:19

人機交互界面iOS

2023-06-20 10:11:25

自動化人工智能

2011-07-25 16:21:22

Sencha touc

2022-08-02 08:01:09

開發插件Chrome前端技術

2011-09-01 10:42:14

Objective-CCocoa內存管理

2011-06-09 18:24:36

QT Wince

2012-03-26 09:27:40

谷歌安卓開發谷歌安卓

2023-05-15 18:44:07

前端開發

2009-06-24 16:30:21

JSF組件模型

2013-10-09 09:10:28

移動應用開發NativeHybrid

2015-11-12 16:14:52

Python開發實踐

2015-12-16 10:30:18

前端開發指南

2010-06-13 09:27:56

Widget開發

2019-10-31 08:00:00

機器學習人工智能AI

2021-08-09 09:47:34

Blazor 路由開發

2011-12-29 10:48:49

移動Web

2011-04-18 11:00:34

使用音頻BlackBerry

2012-05-18 10:08:56

TitaniumAndroid

2021-06-21 15:21:52

鴻蒙HarmonyOS應用開發

2011-08-02 17:58:09

iPhone開發 事件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线一区二 | 黄色片亚洲 | 久久久久久国产精品免费免费 | 一区二区三区视频免费看 | 亚洲精品视频久久 | 免费视频一区二区 | 91在线免费观看网站 | 99视频在线 | 亚洲精品中文字幕在线观看 | 免费看91 | 一久久久 | 日日人人 | 亚洲自拍偷拍欧美 | 一级午夜aaa免费看三区 | 国产成人在线看 | 亚洲成人一区二区 | 黄色毛片免费 | 日韩一区二区在线播放 | 欧美国产精品一区二区三区 | 国产色婷婷精品综合在线手机播放 | 国产免费a | 亚洲乱码国产乱码精品精98午夜 | 2021天天躁夜夜看 | 欧美一级免费观看 | 一级二级三级在线观看 | 日本三级电影在线看 | 午夜影院黄 | 亚洲欧美视频 | 特级一级黄色片 | 国产 日韩 欧美 在线 | 国产精品福利在线 | 亚洲国产精品久久久久婷婷老年 | 欧美精品一区二区在线观看 | 黄色网毛片 | 精品成人在线视频 | 国产乱码精品1区2区3区 | 欧美激情在线一区二区三区 | 久草中文网 | 亚洲精品女人久久久 | 天天干狠狠操 | 日本久久视频 |