1

私はcoffeescriptを学んでおり、特定の単語を逆にする次の関数を書きました:

reverse = (word) ->
 if word.length is 0
     return "empty string"
 if word.length is 1
     return word
 left = 0
 right = word.length-1
 while left < right
     swap(word, left, right)
     #[word[left], word[right]] = [word[right], word[left]]
     left++
     right--
 return word

swap = (word, left, right) ->
 console.log "#{word[left]} #{word[right]}"
 temp = word[left]
 word[left] = word[right]
 word[right] = temp
 console.log "#{word[left]} #{word[right]}"

console.log reverse("coffeescript")

しかし、うまくいきません。スワップ関数自体では、2 つのインデックスの文字が入れ替わることはありません。私は何が欠けていますか?

4

2 に答える 2

4

問題は、Javascript の文字列が不変であるため、変更できないことです。

文字列を逆にする別の方法は次のとおりです。

 "coffeescript".split("").reverse().join ""

rosettacode.orgから。

于 2013-06-02T19:46:56.753 に答える
1

文字列を逆にするもう 1 つのオプションは、CoffeeScript です。

(c for c in 'coffeescript' by -1).join ''

于 2013-06-02T21:34:57.763 に答える