看板 Ruby 關於我們 聯絡資訊
※ 引述《ireullin (raison detre)》之銘言: : 我想修改一個變數的值 : 方式如下 : params[:scaffold_demo][:notified_at] = : Time.parse(params[:scaffold_demo][:notified_at]).getutc : 請問不知道有沒有更聰明的寫法 : 例如像下面一樣用block解決問題 : 當然下面這個是不可行的 : params[:scaffold_demo][:notified_at] {|v| v=Time.parse(v).getutc } : 但想請問有沒有類似的方法 有,但是不建議,因為反而降低了可讀性 [7] pry(main)> params = {scaffold_demo: {notified_at: Time.now.to_s}} => {:scaffold_demo=>{:notified_at=>"2015-03-11 12:46:56 +0800"}} [8] pry(main)> params[:scaffold_demo].tap{|h|h[:notified_at] = Time.parse(h[:notified_at]).getutc} => {:notified_at=>2015-03-11 04:46:56 UTC} [9] pry(main)> params => {:scaffold_demo=>{:notified_at=>2015-03-11 04:46:56 UTC}} -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.168.0.73 ※ 文章網址: https://www.ptt.cc/bbs/Ruby/M.1426049301.A.A46.html
ireullin: 但是無法做到 03/11 18:29
ireullin: params[:scaffold_demo][:notified_at].tap {|v| v=Time 03/11 18:29
ireullin: .parse(v).getutc } 03/11 18:29
ireullin: 有辦法讓string pass by reference嗎 03/11 18:30
ireullin: 或是還有其他方式? 03/11 18:32
mars90226: 沒有 03/11 19:23
johnlinvc: 因為getutc 完他就不是String, 沒辦法直接覆蓋 03/11 21:06