2012-12-05 47 views
0

我得到一些奇怪的输出,我的Ruby代码。下面是代码:Ruby输出不一致

  mDate = schedule['date'] 
      sTime = schedule['startTime'] 
      eTime = schedule['endTime'] 

      puts "Original Start Time: #{sTime}" 
      puts "Original End Time: #{eTime}" 
      puts "Original Date: #{mDate}" 

      sDate = mDate 
      eDate = mDate 

      puts "sDate: #{sDate}" 
      puts "eDate: #{eDate}" 

      @startTime = sDate.concat("T" + sTime + "Z") 
      @endTime = eDate.concat("T#{eTime}Z") 
      @date = schedule['date'] 

      puts "Start Time: #{@startTime}" 
      puts "End Time: #{@endTime}" 
      puts "Date: #{@date}" 

      puts "Original Start Time: #{sTime}" 
      puts "Original End Time: #{eTime}" 
      puts "Original Date: #{mDate}" 

这里是输出:

Original Start Time: 15:00:00 
Original End Time: 15:00:00 
Original Date: 2012-12-05 
sDate: 2012-12-05 
eDate: 2012-12-05 
Start Time: 2012-12-05T15:00:00ZT15:00:00Z 
End Time: 2012-12-05T15:00:00ZT15:00:00Z 
Date: 2012-12-05T15:00:00ZT15:00:00Z 
Original Start Time: 15:00:00 
Original End Time: 15:00:00 
Original Date: 2012-12-05T15:00:00ZT15:00:00Z 

任何人都可以阐明一些,为什么1.值改变2.为什么的concat是增加的值的两倍3.跆拳道我在这里做错了吗?

回答

2
sDate = mDate.clone 
eDate = mDate.clone 

否则它们都最终被所述同一对象

此外,请解释一些有关该问题的内容,而不是仅仅倾销代码和输出。在你的问题结束时,我读了“我在这里做错了”,就像“我在这里做的事情”一样。

+0

谢谢。这解决了它。 :) – BlackHatSamurai

+0

或者当你不打算进行变异时,不要使用变异方法(比如'concat')。 –

+0

@AndrewMarshall:有效。 “为什么价值观在变化?” “因为你改变了他们!” :d – Amadan