Re: [問題] 想把 > 和 < 在迴圈中動態給定

看板Programming作者 (喲)時間12年前 (2013/02/09 20:39), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
※ 引述《BBSealion (海獅)》之銘言: : 有點不清楚怎麼敘述 : 就是我有一個判斷是要跑 : if(a>1) : else if(a>2) : ... : else if(a>10) : 另一個就是反過來 : if(a<1) : else if(a<2) : ... : else if(a<10) : 因為兩個判斷是裡面做的事情很像 : 我想寫成一個i=0~1跑兩次的迴圈解決 : 但要怎樣控制那個判斷式的 > 和 < 記號呢? : 是可以另外寫一個function丟參數i進去實作 > 和 < : 但為了一個大於小於多開一個function感覺還是不太漂亮 : 想知道有沒有更精簡的寫法呢 為了大於和小於分別開不同的functions才漂亮,反倒是拿一個參數決定階層式大於 或階層式小於才是醜惡. 因為,你怎麼能說 if (a>10) ... else if (a > 9) ... 到 else if (a > 1) ... 的反向是 if (a<1) ... else if (a < 2) ... 到 else if (a < 10) ? 這種關連,你要說是反函數也不是,要說是語意相近,又差很多. 主要還是看功能依賴性質,還有上下文. 看大於的部份,由這種程式結構衍生出來 的最小功能,大概就是一列數字區間,每一項分別對應獨立的值. 也可以寫成這樣: Storage s[10] = ... Storage result; ...... for (i=10; i<=1; i--) { if (a > i) { result = s[i-1]; ...... break; } } 如果Storage是一個值, result就拿到一個值; 如果Storage是個物件, 對result 的操作就代表對應於不同的程式段落. 而後者, 如果Ruby的duck typing成立, 就 很棒, 要不然假如是做類似的操作像 result.do(i) 這種廢話操作,就白忙一場. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.167.46.76
文章代碼(AID): #1H5aES0q (Programming)
文章代碼(AID): #1H5aES0q (Programming)