Re: [问题] 如何改写一变量的值

楼主: johnlinvc (阿翔)   2015-03-11 12:48:17
※ 引述《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}}
作者: ireullin (raison detre)   2015-03-11 18:29:00
但是无法做到params[:scaffold_demo][:notified_at].tap {|v| v=Time.parse(v).getutc }有办法让string pass by reference吗或是还有其他方式?
作者: mars90226 (火星人)   2015-03-11 19:23:00
没有
楼主: johnlinvc (阿翔)   2015-03-11 21:06:00
因为getutc 完他就不是String, 没办法直接覆蓋

Links booklink

Contact Us: admin [ a t ] ucptt.com