差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
blog:2020:1101_今日のメソッド [2020/11/01 01:14]
kijima
blog:2020:1101_今日のメソッド [2020/11/01 11:52] (現在)
kijima [その2]
行 3: 行 3:
 ====== 今日のメソッド ====== ====== 今日のメソッド ======
  
-===== Rails。''Hash#slice!'' =====+===== その1 =====
  
-例 +Railsの''Hash#slice!''から
-<code ruby> +
-hash = { a: 1, b: 2, c: 3 } +
-hash.slice!(:a, :b) +
-hash # => {:a=>1, :b=>2} +
-</code> +
- +
-要するに配列の対応したやつだけ取り出すメソッド。!は破壊的なことをしめす。hash自体が変化している+
  
 <code ruby> <code ruby>
行 18: 行 11:
   omit = slice(*self.keys - keys) # keysは登録ハッシュを出すメソッド。ここでは、[:if, :unless, :on..]などが入っている。*self.keysは引数のこと?引いて…つまりこれらのオプションは無視する、と。   omit = slice(*self.keys - keys) # keysは登録ハッシュを出すメソッド。ここでは、[:if, :unless, :on..]などが入っている。*self.keysは引数のこと?引いて…つまりこれらのオプションは無視する、と。
   hash = slice(*keys)   hash = slice(*keys)
-  hash.default      = default # hash.defaultは初期値のようだ、defaultはそもそもnilの模様。+  hash.default      = default # defaultも保持する必要ある!
   hash.default_proc = default_proc if default_proc # procをよくわかっていない。   hash.default_proc = default_proc if default_proc # procをよくわかっていない。
   replace(hash) # ここがメイン。   replace(hash) # ここがメイン。
行 26: 行 19:
  
   * sliceの挙動をちょっと変えて、便利にしている。   * sliceの挙動をちょっと変えて、便利にしている。
 +
 +''slice!''の例
 +<code ruby>
 +hash = { a: 1, b: 2, c: 3 }
 +hash.slice!(:a, :b)
 +hash # => {:a=>1, :b=>2}
 +</code>
 +
 +要するに配列の対応したやつだけ取り出すメソッド。!は破壊的なことをしめす。hash自体が変化している。
 +===== その2 =====
 +''String#camelize''
 +
 +<code ruby>
 +def camelize(first_letter = :upper)
 +  case first_letter
 +  when :upper
 +    ActiveSupport::Inflector.camelize(self, true)
 +  when :lower
 +    ActiveSupport::Inflector.camelize(self, false)
 +  else
 +    raise ArgumentError, "Invalid option, use either :upper or :lower."
 +  end
 +end
 +</code>
 +
 +
 +<code ruby>
 +"mozilla_firefox".camelize # => MozillaFirefox # upper camel case というらしい。
 +"mozilla_firefox".camelize(:lower) # => mozillaFirefox # lower camel case というらしい。最初だけ小文字。
 +</code>
 +
 +  * '':upper'' か '':lower'' 以外を入れたとき、ちゃんとエラーメッセージが返ってきて親切。
 +===== その3 =====
 +''default-proc''
 +
 +そもそもprocがわかってない。
 +
 +<code ruby>
 +h = Hash.new { |a| h[a] = a*a } # defaultを定義
 +p = h.default_proc
 +p.call(2)  # => 4
 +p.call(10) # => 100
 +h          # => {2=>4, 10=>100} 
 +</code>
 +
 +<code ruby>
 +h = Hash.new { 3 } # defaultを定義
 +p = h.default_proc
 +p.call # => 3
 +</code>
 +===== 4 =====
 +''hash#default''
 +
 +https://www.includehelp.com/ruby/hash-default_proc-method-with-example.aspx
 +
 +<code ruby>
 +hash = Hash.new(33) # => {}
 +hash                # => {}
 +hash[:a]            # => 33
 +hash.default        # => 33
 +</code>
blog/2020/1101_今日のメソッド.1604160869.txt.gz · 最終更新: 2020/11/01 01:14 by kijima