<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 練習 48:`ed` > 原文:[Exercise 48: ed](https://learncodethehardway.org/more-python-book/ex48.html) > 譯者:[飛龍](https://github.com/wizardforcel) > 協議:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/) > 自豪地采用[谷歌翻譯](https://translate.google.cn/) 如果你的流程生效了,那么你應該能夠專注于較長的項目,一次幾個星期。在這個項目中,你的目標是創建盡可能精確的`ed`命令副本。這個練習的目標是不要有創意,而是要系統地實現另一個軟件的精確副本。將其看作一個偽造的練習。你會做出一些非常好的東西,你可以用它代替原來的`ed`,沒有人會知道。 這項工作是創建`ed`命令的“代碼大師副本”,盡可能準確,也就是說,你的測試套件應該對真正的`ed`和你的版本運行同一腳本,來比較輸出。這就像你在學習算法時所做的“代碼大師副本”練習,除了你復制現有軟件的行為,而不是試圖記住它。這個流程是相似的,但你可以使用測試套件幫助它更快地進行。 ## 挑戰練習 `ed`工具,是現存的最早的 Unix 文本編輯器之一,坦率地說,它非常糟糕。實際上我無法想像有人使用`ed`編輯文本,因為它是目前最受用戶討厭的軟件之一。如果你無法想象,在 Unix 的黑暗時期,有多少計算機出了故障,制作一個`ed`的副本會讓你見識一下。 `ed`的一些概念是,雖然它支持腳本,但它最初是以交互方式使用的。就像用于文本文件的 MUD。你首先運行`ed`,它以命令模式啟動,讓你可以使用命令修改文本。當你執行需要輸入的命令時,它將進入輸入模式,直到該命令結束。你也必須知道行的地址來編輯它。這似乎是一種痛苦,但與其他文字編輯器相比,這是獨角獸的魔法。 為了完成你的`ed`副本,你需要嚴重依賴于 [Python 的`re`庫](https://docs.python.org/2/library/re.html),來使用正則表達式。我們在練習 31 中使用了這個庫,所以通常你應該熟悉它和 RegEx。 我還建議你,在 45 分鐘的會話內,嘗試使用`ed`,來你的`ed`項目編寫一些代碼。這樣做的痛苦將會教你如何復制它。 除此之外,你將需要閱讀`man ed`頁面來獲取命令的基礎知識,并可能會觀看它的使用教程。一個很好的起步就是,在線尋找不同的示例腳本,并嘗試將它們作為你的第一個測試用例。 > 注 > 我會給你一個線索,你需要使用 FSM 來處理`ed`命令的模態本質。 ## 研究性學習 + 查找 GNU `ed`的源代碼,即使你不懂得 C 語言,也看一看它。 + 將你的`ed`實現變成一個模塊,然后可以在其他項目中使用。你需要將其用于以后的練習。 + 永遠不要再做這樣的軟件,除非你就是無聊了。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看