[過去ログ] Ruby 初心者スレッド Part 58 [無断転載禁止]©2ch.net (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
597
(2): デフォルトの名無しさん [sage] 2016/07/29(金) 19:32:20.85 ID:jkc14IDK(1) AAS
nums.each do |key, value|
  if value%2 == 0
    nums[:key] = value
  end

まずこれはeach doに対してendが無いからエラーになる
そして:keyはkeyではなく:keyというSymbolなのでこれも間違い
nums = {:a=>1
1(2): デフォルトの名無しさん [sage] 2016/03/23(水) 21:16:44.36 ID:6HedlyzC(1) AAS
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 57
2chスレ:tech

るりまサーチ (リファレンス検索)
外部リンク:rurema.clear-code.com

Rubyist Magazine - るびま
外部リンク:jp.rubyist.net

逆引きRuby
外部リンク:www.namaraii.com
:b=>2
2(2): デフォルトの名無しさん [sage] 2016/03/24(木) 04:01:05.34 ID:FJvNCHp3(1) AAS
たのしいRuby 第5版、2016

Effective Ruby、2015

メタプログラミング Ruby 第2版、2015

Rubyのしくみ、2014

改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015
:c=>3
3(1): デフォルトの名無しさん [] 2016/03/24(木) 19:11:14.30 ID:5a9zwPTf(1) AAS
Windows版でunicodeのコマンドライン引数まだ使えないの?
:d=>4 :e=>5 :key=>1}
nums[:b] = 2
p nums #=> {:a=>1 :b=>2 :c=>3 :d=>4 :e=>5 :key=>1}
飽くまで:bに対して2を再び関連付けているだけなので間違い
どうしても上のような書き方がしたいなら

h = Hash.new
nums.each do |key, value|
  if value%2 == 0
    h[key] = value
  end
end

p h #=> {:b=>2 :d=>4}

Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
598: デフォルトの名無しさん [] 2016/07/29(金) 20:01:51.49 ID:mtfgcrou(1) AAS
>>597
やはりあなたはリンクしすぎです
ばいばいおさるさん
599: デフォルトの名無しさん [] 2016/07/29(金) 23:54:22.01 ID:AO+a9SAV(3/3) AAS
某テキスト(?)のメソッド Enumerable#select! を使うなら、
>>593
593(2): デフォルトの名無しさん [sage] 2016/07/29(金) 15:35:49.37 ID:flV7hOuN(1) AAS
>>590
これだと偶数の要素だった場合、その要素を再代入してることになる
新しく別の配列に代入するとかならその書き方で問題ないと思うよ
ちなみに nums.select! { |k, v| v % 2 == 0 } が一番良さそう
>>595
595(2): デフォルトの名無しさん [sage] 2016/07/29(金) 16:55:05.51 ID:Ogz/SEhr(1) AAS
特に面白いものは書けず
nums.reject{|_,v|v.odd?}
nums.grep(proc{|_,v|v&1==0}).to_h
nums.each{|k,v|v.odd?&&nums.delete(k)}
の先頭を参考にして;

 nums.select! { |_, val| val.even? }

 外部リンク:ideone.com

もしも同メソッドを使用せずに自前で各要素を列挙するなら:

 nums.each do |key, val|
   nums.delete key unless val.even?
 end

 外部リンク:ideone.com

なお >>597 のように、元の変数 nums の値を(破壊的代入)で更新せず、
結果としての値を求めることを優先するというお題の改変が許されるなら:

 nums.select { |_, val| val.even? }

 外部リンク:ideone.com

このコードを推奨する
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.187s*