2013-06-02 2 views
1

Я учусь CoffeeScript и написал следующую функцию реверс данное слово:подкачка элементы массива в 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") 

Но это не работает. В самой функции подкачки символы из двух индексов не меняют места. Что мне не хватает?

+0

Мой ответ делает именно это, используя .split («»), чтобы превратить строку в массив символов. –

ответ

4

Проблема может заключаться в том, что в строках Javascript неизменяемы, и поэтому вам не разрешено их изменять.

Альтернативный подход к обратной строки является

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

От rosettacode.org.

+0

argh, не могу поверить, что я забыл, что строки неизменяемы. Благодаря! – tldr

1

Еще один вариант для изменения строки является CoffeeScript является:

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

Смежные вопросы