Re: [問題] 如何改寫一變數的值

看板Ruby作者 (阿翔)時間9年前 (2015/03/11 12:48), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《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

03/11 18:29, , 1F
但是無法做到
03/11 18:29, 1F

03/11 18:29, , 2F
params[:scaffold_demo][:notified_at].tap {|v| v=Time
03/11 18:29, 2F

03/11 18:29, , 3F
.parse(v).getutc }
03/11 18:29, 3F

03/11 18:30, , 4F
有辦法讓string pass by reference嗎
03/11 18:30, 4F

03/11 18:32, , 5F
或是還有其他方式?
03/11 18:32, 5F

03/11 19:23, , 6F
沒有
03/11 19:23, 6F

03/11 21:06, , 7F
因為getutc 完他就不是String, 沒辦法直接覆蓋
03/11 21:06, 7F
文章代碼(AID): #1K_yaLf6 (Ruby)
討論串 (同標題文章)
文章代碼(AID): #1K_yaLf6 (Ruby)