2012-12-05 87 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