2013-12-21 29 views
1

我不是Ruby程序員,但在試圖回答這個問題python's counterpart for Ruby String#succ?時,我試圖瞭解Ruby的實現如何工作。然後我提到的文檔succ → new_str,我意識到,所有的例子不符合說明中,除了瞭解字符串#succ

"<<koala>>".succ #=> "<<koalb>>" 

我的Python實現返回

>>> succ("<<koala>>") 
'<<koala>?' 

通過採用三個演替規律

  1. 遞增數字總是會產生另一個數字
  2. 遞增一個字母會導致另一個字母同樣的情況。
  3. 遞增非字母數字使用底層字符集的整理順序。

正如從文檔解釋,但看到上面的例子,似乎我失去了一些東西。

有人能幫我理解上面例子背後的邏輯嗎?

+1

*從最右邊的字母數字(或最右邊的字符(如果沒有字母數字)*)開始*,因此您必須增加'a'。只有在字符串中有* no *字母數字時,纔會將'>'增加到下一個字符。 –

+0

這是一個關於Ruby或關於Python的問題嗎?如果要說明Ruby的succ是如何工作的,那麼如何在Python中實現它應該是一個獨立的問題,在這裏應該是無關緊要的。你的問題混淆了。 – sawa

+0

根據Ruby文檔:*後繼者是通過從字符串中最右邊的字母數字(或最右邊的字符,如果沒有字母數字)開始遞增字符來計算的* – lurker

回答

2

它實際上是在文檔中描述的,也許你誤解了。

如果有字母數字字符,則必須從最右邊的一個字符(最後"a","<<koala>>")開始遞增。

如果字符串中沒有字母數字字符,則必須從整個字符串中最右邊的字符開始遞增。

+0

謝謝。我應該對doc更加小心:-) – Abhijit