2011-05-04 12 views

Odpowiedz

7

Nie sądzę, nie ma żadnych wbudowanych w metodzie, ale można napisać prosty samemu:

CONSONANTS = [ 'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z' ] 

def adverbize(word) 
    if word[-2,2] == "ly" 
    word 
    elsif word.length <= 3 and word[-1] == "y" 
    word + "ly" 
    elsif word[-2,2] == "ll" 
    word + "y" 
    elsif CONSONANTS.include? word[-3] and word[-2,2] == "le" 
    word.sub(/e$/, "y") 
    elsif word[-1] == "y" 
    word.chop + "ily" 
    else 
    word + "ly" 
    end 
end 

Innym sposobem na to, że będzie działać za każdym razem, (jest to głównie żart, ale możesz go użyć, jeśli chcesz)

def adverbize(word) 
    "In a " + word + " fashion." 
end 
+0

Miałem nadzieję na jeden wbudowany, więc większość zasad zostanie załatwiona. Gramatyka nie jest moją mocną stroną;). – deb

+1

'słowo [-1] == 'y'? word.chop + 'ily': word + 'ly'' Powinno to obsłużyć najczęstszy wyjątek. Istnieją inne, na przykład "le" => "ly". –

+1

Edytowano odpowiednio, @LarsHaugseth. Dzięki! –