2015-05-30 3 views
1

Почему мой код не печатает объединенный массив? С помощью этого кода массив печатает измененные элементы, но не присоединился к ...Объединить элементы массива

def translate(string) 
    vowels=['a','e','o','u','i'] 
    string=string.split 
    string.map! do 
     |x| if vowels.include? x[0] 
      x.insert(-1,'ay') 
      else 
      x=x.slice(1, x.length) 
      x=x.insert(-1, x[0]+'ay') 
     end 
    end 
    string.join('-') 
    print(string) 
end 

ответ

3

Метод Array#join не ставит перед собой в качестве объединенной строки, вместо этого он просто возвращает строку присоединился. Вы можете сохранить соединенный результат в string себя так:

# ... 
string = string.join('-') 
print string 

Конечно, использовать другую переменную может быть более удобным для чтения:

# ... 
joined_string = string.join('-') 
print joined_string 
+0

Метод не возвращает строку он печатает, так что нет повод назначить 'string.join ('-')' переменной. 'print string.join ('-')' достаточно (хотя 'p', вероятно, более подходит, чем' print'). –

+0

@CarySwoveland Спасибо за ваш комментарий. Переменная 'string' на самом деле является' Array'. Я исправлю свой ответ. –

1

Вы не печатает значение, возвращаемое из join.

joined = string.join('-') 
print(joined) 
1

Это потому, что вы не хранить значение, возвращаемое join в любом месте. string сам по-прежнему является массивом. Попробуйте вместо этого:

print string.join('-') 

Таким образом, ваш метод должен выглядеть следующим образом:

def translate(string) 
    vowels=['a','e','o','u','i'] 
    string=string.split 
    string.map! do 
     |x| if vowels.include? x[0] 
      x.insert(-1,'ay') 
      else 
      x=x.slice(1, x.length) 
      x=x.insert(-1, x[0]+'ay') 
     end 
    end 
    print string.join('-') 
end 
Смежные вопросы