[爆卦]Isequal MATLAB是什麼?優點缺點精華區懶人包

雖然這篇Isequal MATLAB鄉民發文沒有被收入到精華區:在Isequal MATLAB這個話題中,我們另外找到其它相關的精選爆讚文章

在 isequal產品中有1篇Facebook貼文,粉絲數超過2萬的網紅紀老師程式教學網,也在其Facebook貼文中提到, [學員來信回覆] 『饕客』與『漁夫』 以下是那位先前我說過,這一期 iPhone / iPad 程式設計班用功到我立正致敬的學員,昨天問我的問題。今早抽空回覆他後,覺得裡面有些程式抓錯(Debug)邏輯與技巧,很值得分享給大家知道,所以就貼上來了。如果您沒學過 iPhone / iPad 程式設計...

 同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...

  • isequal 在 紀老師程式教學網 Facebook 的最佳貼文

    2013-02-23 12:20:00
    有 5 人按讚

    [學員來信回覆] 『饕客』與『漁夫』

    以下是那位先前我說過,這一期 iPhone / iPad 程式設計班用功到我立正致敬的學員,昨天問我的問題。今早抽空回覆他後,覺得裡面有些程式抓錯(Debug)邏輯與技巧,很值得分享給大家知道,所以就貼上來了。如果您沒學過 iPhone / iPad 程式設計,對於原始碼說明那部分可以無視跳過去,但前頭的「除錯邏輯」麻煩您看一看,應該會有幫助。下次發生「某功能跑不出來」,就不會只是像無敵風火輪裡的天竺鼠一般,「怎麼辦怎麼辦」地窮轉而徒勞無功了。

    什麼?你問我這跟『饕客』與『漁夫』有什麼關係?哈哈哈!你看完就知道了。

    ----------------

    [學員來信部分]

    Hi,老師
    秀不出來,是if的判斷式有錯?

    (紀老師:是的,以下就沒了,就像你跟醫師說完「我咳嗽」,其它問題都回答「不知道」是一樣的)

    [紀老師回信部分]

    您好:

    其實寫程式的「抓錯(Debug)」跟醫師診斷病因有異曲同工之妙。病人跟你說:「我咳嗽」,你就得靠經驗用「消去法」,刪除不可能的病因,直到只剩一條病因、並驗證就是這條病因導致為止。

    同樣的,您說「秀不出來」,這可以分為幾個可能「病因」去檢查:

    (1) 根本沒有觸發該函數(也就是說,沒有綁定)。
    (2) 觸發該函數了,可是沒執行我們想要它執行的程式碼。
    (3) 觸發該函數,我們想要它執行的程式碼也執行了,但是因為程式邏輯可能有誤,導致執行結果一片空白,變成「秀不出來」。

    以上的「思維」,對於將來「XXX 功能『跑不出來』」這種情況一體適用。所以,上面的幾條「斷診邏輯」,麻煩您要絕對緊記在心。下次就不會只是兩手一攤說「秀不出來」,而是「我的函數有觸發,程式碼也執行了,但就是秀不出來。老師可以幫我看看我的程式邏輯哪裡有錯誤嗎?」對我來說,後者問問題的「段數」,比前者高了很多(以上我嘗試著把你從吃魚的「饕客」,變成抓魚的「漁夫」)。

    如果想要檢查出 (1) 與 (2) 很簡單,只要多加兩個 NSLog() 就可以了。如下所示:

    -(void) show:(UIButton *) sender
    {
    NSLog(@"Enter (void) show"); // 第一個 NSLog()

    if ([btnShow.titleLabel isEqual: @"Show"]) {

    NSLog(@"Enter if-statement"); // 第二個 NSLog()

    lblShow = [[UILabel alloc]initWithFrame:CGRectMake(120,200,100,20)];
    lblShow.text = @"Hello World!";
    lblShow.backgroundColor = [UIColor lightGrayColor];
    [self.view addSubview:lblShow];
    [btnShow setTitle:@"Hide" forState:UIControlStateNormal];
    }
    }

    我執行後發現,第一個 NSLog 有執行,但第二個 NSLog 沒執行。所以,函數有觸發,(1) 號病因不成立。(2) 號病因成立。

    明明 btnShow 上面的 Title Label 就是 Show 啊?為什麼 if 會不成立,導致 (2) 號病因成立呢?這時你就有能力把眼睛「完全聚焦」在 if (…) 那一段,解開後,整個問題就解開了。仔細看後發現,你的屬性用錯了。 btnShow.titleLabel 的型別是 UIButton,而 UIButton 的 isEqual,根據使用說明書提示,是判斷該 UIButton 的「識別字(Identifier)」是否為 @"Show",而不是 UIButton 上的表面文字是否為 @"Show"。所以,程式碼應該寫成:

    -(void) show:(UIButton *) sender
    {
    NSLog(@"Enter (void) show");

    if ([btnShow.titleLabel.text isEqualToString: @"Show"]) {

    NSLog(@"Enter if-statement");

    lblShow = [[UILabel alloc]initWithFrame:CGRectMake(120,200,100,20)];
    lblShow.text = @"Hello World!";
    lblShow.backgroundColor = [UIColor lightGrayColor];
    [self.view addSubview:lblShow];
    [btnShow setTitle:@"Hide" forState:UIControlStateNormal];
    }
    }

    您應該比對的是 titleLabel 的 .text,不是 titleLabel 本身。

    至於按下「Hide」按鈕後,怎麼讓原來的字不見,您就得多加個 else 或 else if 了。在 else { … } 內先把 lblShow 隱藏,然後把 btnShow 的 title 改回 @"Show"。這個就留給你自己補上了。

    雖然我只花了 5 秒就知道問題在哪裡(因為這種錯我也常犯,習慣了),但是我願意花 20 分鐘打這些字,希望你將來能變成「5 秒就知道問題在哪裡」的人,哪天也可以很驕傲地教別人如何 Debug。這是我最大的期望。

    -----------------------------------
    紀俊男(Robert Chi)

  • isequal 在 コバにゃんチャンネル Youtube 的最佳解答

    2021-10-01 13:19:08

  • isequal 在 大象中醫 Youtube 的最讚貼文

    2021-10-01 13:10:45

  • isequal 在 大象中醫 Youtube 的精選貼文

    2021-10-01 13:09:56

你可能也想看看

搜尋相關網站