2011-05-04 21 views

Trả lời

7

Tôi không nghĩ có bất kỳ xây dựng trong phương pháp, nhưng bạn có thể viết một đơn giản một mình:

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 

Một cách khác để làm điều này, mà sẽ làm việc mỗi lần (điều này chủ yếu là một trò đùa, nhưng bạn có thể sử dụng nó nếu bạn muốn)

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

Tôi đã hy vọng cho một trong những xây dựng trong hầu hết các quy tắc sẽ được chăm sóc. Ngữ pháp không phải là sở trường của tôi;). – deb

+1

'word [-1] == 'y'? word.chop + 'ily': word + 'ly'' Điều này sẽ xử lý ngoại lệ phổ biến nhất. Có những người khác, ví dụ như "le" => "ly". –

+1

Đã chỉnh sửa cho phù hợp, @LarsHaugseth. Cảm ơn! –

Các vấn đề liên quan