2013-10-11 5 views
1
그래서 여기에 내가 일하고 있어요 루비 코드의

'가입 : 나는 그것을 테스트 할 때NoMethodError : 정의되지 않은 방법은`

def translate(x) 
array = x.split(" ") 
    array.each do |y| 
    if y.match(/^[aeiou]/) 
     y += "ay" 
    else 
     until y.match(/^[aeiou]/) do 
     var = y[/^[^aeiou]*/] 
     y.slice! /^[^aeiou]*/ 
     y += (var + "ay") 
     end 
    end 
    x = y.join(" ") 
    x 
end 
end 

는 문제가있다. 이건 다음과 같습니다.

NoMethodError: 
     undefined method `join' for "appleay":String 

내 가입 방법과 관련된 문제는 전혀 알지 못합니다.

+4

'y' 변수는'String'입니다; ''사과 나무 '. 'String'에는'join' 메서드가 없습니다. 'y'가 Array가 될 것으로 예상 했었지만 정확히 무엇을 포함 할 것으로 기대합니까? –

+0

"내 조인 방법"에 문제가 있다고하지만 조인 방법을 전혀 표시하지 않습니다. – vgoff

답변

1

y은 문자열입니다.

x = y.split(//).join(" ") 

을하지만, 아마도 당신은 루프 후를 배치 할 : 당신이 문자의 그것의 배열에서 만들 필요가 있다면 당신은해야한다. 그것은 다음과 같이 보일 것입니다 :

def translate(x) 
    array = x.split(" ") 
    x = [] 
    array.each do |y| 
    if y.match(/^[aeiou]/) 
     y += "ay" 
    else 
     until y.match(/^[aeiou]/) do 
     var = y[/^[^aeiou]*/] 
     y.slice! /^[^aeiou]*/ 
     y += (var + "ay") 
     end 
    end 
    x << y 
    end 
    x.join(' ') 
end 
관련 문제