差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
blog:2020:1101_今日のメソッド [2020/11/01 01:06]
kijima [今日のメソッド]
blog:2020:1101_今日のメソッド [2020/11/01 11:52] (現在)
kijima [その2]
行 2: 行 2:
  
 ====== 今日のメソッド ====== ====== 今日のメソッド ======
 +
 +===== その1 =====
  
 Railsの''Hash#slice!''から。 Railsの''Hash#slice!''から。
  
-+<code ruby> 
 +def slice!(*keys) 
 +  omit = slice(*self.keys - keys) # keysは登録ハッシュを出すメソッド。ここでは、[:if, :unless, :on..]などが入っている。*self.keysは引数のこと?引いて…つまりこれらのオプションは無視する、と。 
 +  hash = slice(*keys) 
 +  hash.default      = default # defaultも保持する必要がある! 
 +  hash.default_proc = default_proc if default_proc # procをよくわかっていない。 
 +  replace(hash) # ここがメイン。 
 +  omit # 画面出力用。副作用にすぎない。 
 +end 
 +</code> 
 + 
 +  * sliceの挙動をちょっと変えて、便利にしている。 
 + 
 +''slice!''
 <code ruby> <code ruby>
 hash = { a: 1, b: 2, c: 3 } hash = { a: 1, b: 2, c: 3 }
行 13: 行 28:
  
 要するに配列の対応したやつだけ取り出すメソッド。!は破壊的なことをしめす。hash自体が変化している。 要するに配列の対応したやつだけ取り出すメソッド。!は破壊的なことをしめす。hash自体が変化している。
 +===== その2 =====
 +''String#camelize''
  
 <code ruby> <code ruby>
-def slice!(*keys+def camelize(first_letter = :upper
-  omit = slice(*self.keys - keys) # keysは登録ハッシュを出すメソッド。ここでは、[:if, :unless, :on..]などが入っている。*self.keysは引数のこと?引いて…つまりこれらのオプションは無視する、と。 +  case first_letter 
-  hash = slice(*keys+  when :upper 
-  hash.default      = default # hash.defaultは初期値のようだが、defaultはそもそもnilの模様。 +    ActiveSupport::Inflector.camelize(self, true) 
-  hash.default_proc = default_proc if default_proc # procをよくわかっていない +  when :lower 
-  replace(hash) # ここがメイン。 +    ActiveSupport::Inflector.camelize(self, false
-  omit # 画面出力用。副作用にすぎない。+  else 
 +    raise ArgumentError, "Invalid option, use either :upper or :lower." 
 +  end
 end end
 </code> </code>
  
-  sliceの挙動をちょっ変え、便利にしてい+例 
 +<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_今日のメソッド.1604160382.txt.gz · 最終更新: 2020/11/01 01:06 by kijima