<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                * 傾向數組及哈希的字面表示法(除非你需要給構造器傳入參數)。 ~~~ # 差 arr = Array.new hash = Hash.new # 好 arr = [] hash = {} ~~~ * 創建元素為單詞(沒有空格和特殊符號)的數組時,用?`%w`?而不是 [] 方法。僅當數組有兩個及以上元素時才應用這個規則。 ~~~ # 差 STATES = ['draft', 'open', 'closed'] # 好 STATES = %w(draft open closed) ~~~ * 當你需要一個符號的數組(并且不需要保持 Ruby 1.9 兼容性)時,使用?`%i`。僅當數組只有兩個及以上元素時才應用這個規則。 ~~~ # 差 STATES = [:draft, :open, :closed] # 好 STATES = %i(draft open closed) ~~~ * 避免在?`Array`?和?`Hash`?字面量中的最后一個元素后面使用逗號。特別是元素同一行的情況下 ~~~ # 差 - 方面移動、增加和修改參數,但仍不建議使用 VALUES = [ 1001, 2020, 3333, ] # 差 VALUES = [1001, 2020, 3333, ] # 好 VALUES = [1001, 2020, 3333] ~~~ * 避免在數組中創造巨大的間隔。 ~~~ arr = [] arr[100] = 1 # 現在你有一個很多 nil 的數組 ~~~ * 當訪問數組的首元素或尾元素時,盡量使用?`first`?或?`last`, 而非?`[0]`?或?`[-1]`。 * 當處理的元素沒有重復時,使用?`Set`?來替代?`Array`?。?`Set`?實現了無序、無重復值的集合。?`Set`?的方法同數組類一樣直觀,還可像哈希中那樣快速查找元素。 * 盡量用符號來取代字符串作為哈希的鍵。 ~~~ # 差 hash = { 'one' => 1, 'two' => 2, 'three' => 3 } # 好 hash = { one: 1, two: 2, three: 3 } ~~~ * 避免使用可變的對象作為鍵值。 * 當哈希的鍵為符號時,使用 Ruby 1.9 的哈希的字面語法。 ~~~ # 差 hash = { :one => 1, :two => 2, :three => 3 } # 好 hash = { one: 1, two: 2, three: 3 } ~~~ * 但哈希的鍵有符號也有字符串時,不使用Ruby 1.9的字面量語法。 ~~~ # 差 { a: 1, 'b' => 2 } # 好 { :a => 1, 'b' => 2 } ~~~ * 用?`Hash#key?`。不用?`Hash#has_key?`。用?`Hash#value?`。不用?`Hash#has_value?`。松本提到過已經不推薦使用較長的形式了。 ~~~ # 差 hash.has_key?(:test) hash.has_value?(value) # 好 hash.key?(:test) hash.value?(value) ~~~ * 在處理應該存在的哈希鍵時,使用?`Hash#fetch`。 ~~~ heroes = { batman: 'Bruce Wayne', superman: 'Clark Kent' } # 差 - 如果我們打錯字的話,我們就無法找到對的英雄了 heroes[:batman] # => "Bruce Wayne" heroes[:supermen] # => nil # 好 - fetch 會拋出一個 KeyError 來使這個問題明顯 heroes.fetch(:supermen) ~~~ * 在使用?`Hash#fetch`?時,使用第二個參數設置默認值。 ~~~ batman = { name: 'Bruce Wayne', is_evil: false } # 差 - 如果我們僅僅使用 || 操作符,那么當值為假時,我們不會得到預期的結果 batman[:is_evil] || true # => true # 好 - fetch 在遇到假值時依然正確 batman.fetch(:is_evil, true) # => false ~~~ * 如果求值的代碼有副作用或者開銷大,盡量用?`Hash#fetch`?加區塊而不是直接設定默認值。 ~~~ batman = { name: 'Bruce Wayne' } # 差 - 默認值是立即求值 batman.fetch(:powers, obtain_batman_powers) # obtain_batman_powers 需要復雜的計算 # 好 - 區塊是惰性求職,只有當 KeyError 異常時才執行 batman.fetch(:powers) { obtain_batman_powers } ~~~ * 當需要從哈希中同時獲取多個鍵值時,使用?`Hash#values_at`。 ~~~ # 差 email = data['email'] username = data['nickname'] # 好 email, username = data.values_at('email', 'nickname') ~~~ * Ruby 1.9 的哈希是有序的,利用這個特性。 * 在遍歷一個集合時,不要改動它。 * 當訪問集合中的元素時,避免通過?`[n]`?直接訪問,盡量使用提供的方法。這樣可以防止你對?`nil`?調用?`[]`。 ~~~ # 差 Regexp.last_match[1] # 好 Regexp.last_match(1) ~~~ * 為集合提供存取器時,在訪問元素之前采用一種替代的形式,從而防止用戶訪問的下標是?`nil`。 ~~~ # 差 def awesome_things @awesome_things end # 好 def awesome_things(index = nil) if index && @awesome_things @awesome_things[index] else @awesome_things end end ~~~
                  <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>

                              哎呀哎呀视频在线观看