Я пытаюсь вернуть этот код при вызове без блока. Несовершенные строки внизу - это то, что я пытаюсь вернуть. Первая раскованная строка должна вернуться в тут, вторая строка переводится на английский, а последняя должна быть на английском языке. И почему линия «puts eng» возвращается вверх и вниз, а не в форме предложения? Спасибо за любую помощь.Ruby: Возврат метода без блока
Вот мой код:
class Tut
@@consonants = ["b","c","d","f","g","h","j","k","l","m","n","p","q","r","s","t","v","w","x","y","z"]
def is_tut? string
if string =~ /^(([b-df-hj-np-z]ut)|([aeiou\s])|[[:punct:]])+$/i
yield
else
false
end
end
def self.to_tut string
string.each_char do |c|
c += "ut" if @@consonants.find { |i| i == c.downcase }
yield c if block_given?
end
end
def self.to_english string
array = string.split //
array.each do |c|
if @@consonants.find { |i| i == c.downcase }
array.shift
array.shift
end
yield c if block_given?
end
end
end
#Tut.to_tut("Wow! Look at this get converted to Tut!") { |c| print c }
# should output : Wutowut! Lutookut atut tuthutisut gutetut cutonutvuteruttutedut tuto Tututut!
#puts
#puts
tut = Tut.to_tut("Wow! Look at this get converted to Tut!")
puts "from return: #{tut}"
puts
#Tut.to_tut("Wutowut! Lutookut atut tuthutisut gutetut cutonutvuteruttutedut tuto Tututut!") { |c| print c }
#should outout : Wutowut! Lutookut atut tuthutisut gutetut cutonutvuteruttutedut tuto Tututut!
#puts
#puts
tut = Tut.to_tut("Wutowut! Lutookut atut tuthutisut gutetut cutonutvuteruttutedut tuto Tututut!")
puts "from return: #{tut}"
#puts
#tut_string = ""
#Tut.to_tut("I'm in tut but I want to be in english.") { |c| tut_string += c }
#puts tut_string
# should output : I'mut inut tututut bututut I wutanuttut tuto bute inut enutgutlutisuthut.
puts
#Tut.to_english(tut_string){ |c| print c }
# should output : I'm in tut but I want to be in english.
lan = Tut.to_english(tut)
puts lan
Uncommented lines? Неясно, о каких из них вы говорите. И вы имеете в виду прокомментированные, а не раскованные? – sawa
Эти строки: репетит = Tut.to_tut ("Wow Посмотрите на это преобразуются в Тута!") путы "от возвращения: # {} TUT"! репетит = Tut.to_tut («Wutowut Lutookut Atut tuthutisut gutetut cutonutvuteruttutedut tuto Tututut! ") puts" from return: # {tut} " lan = Tut.to_english (tut) puts lan –
Хорошо, я понял. «Некоммерческие строки» могут быть более понятными. «Uncommented» означает, что вы (активно) что-то сделали (например, отметили что-то) в строке с комментариями, чтобы сделать ее раскомментированной. – sawa