利用block實現鏈式編程

雖然鏈式編程很少見,但是某些場合下,如果能夠巧妙利用block 實現鏈式編程的話,不僅會提高開發(fā)效率,而且代碼很清晰直觀!也許你會愛上它的!學習它,你只需記住它的寫法就行了。
  • 我曾經做過一個藍牙項目,由于步驟比較多!因為常規(guī)寫法要調用很多方法一大堆代碼看起來也暈暈的,后來,使用到鏈式編程,代碼易讀使用更方便!下面分享一下鏈式編程的簡單使用!

  • 鏈式編程,沒什么難,就是利用block直接按照格式寫就行了。

下面用一個例子說明:我要去市場買菜!?。。ǔR?guī)寫法:)

-首先:新建一個Person類

  • 創(chuàng)建方法(常規(guī)寫法):
    // 無返回值
    - (void)peoples; // 誰
    - (void)byBuses; // 坐公交去
    - (void)buyVege; // 買東西

  • 實現方法:
    // 無返回值
    - (void)peoples
    {
    NSLog(@"我");
    }

    - (void)byBuses
    {
      NSLog(@"坐公交去");
    }
    
    - (void)buyVege
    {
      NSLog(@"買西紅柿和茄子");
    }
    
  • 在main函數調用:
    Person *p = [[Person alloc] init];

      [p peoples];
      [p byBuses];
      [p buyVege];
    
  • 打印結果:

打印結果.png
缺點:如果有許多方法呢?在調用的時候那就要寫好多行代碼,而且也不好看!

用block 巧妙使用鏈式編程:

  • 和上面一樣,就是注意格式寫法而已,并且多了個返回值。

  • 聲明方法:
    // 我做車去買菜
    - (Person *(^)(NSString *name))people; // 誰
    - (Person *(^)())byBus;// 做公交
    - (Person *(^)(NSString *VegName))buyVegetables; // 去買菜

  • 實現方法:
    // 我做車去買菜
    - (Person *(^)(NSString *))people
    {
    return ^(NSString *name){
    NSLog(@"帥哥:%@",name);
    return self;
    };
    }

    - (Person *(^)())byBus
    {
          return ^{
            NSLog(@"坐公交去");
            return self;
         };
    }
    
    - (Person *(^)(NSString *))buyVegetables
    {
          return ^(NSString *buyVege){
              NSLog(@"買:%@",buyVege);
            return self;
      };
    }
    
  • 在main函數調用:
    Person *p = [[Person alloc] init];
    // 只需用點就實現調用了
    p.people(@"光明程輝").byBus().buyVegetables(@"西紅柿、茄子");

  • 實現打印結果:
打印結果.png

優(yōu)點:簡單,思路清晰!易懂!

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容