Wykonanie poprzedniej instrukcji

Załóżmy następującą strukturę:

def funkcja XXX end puts "Lorem ipsum" funkcja
czy jest instrukcja odpowiadająca za to, żeby funkcja “funkcja” wykonała poprzednią instrukcję, czyli w tym wypadku ponownie wyświetliła “Lorem ipsum”?
Potrzebny mi jest taki właśnie myk. W uproszczeniu działam tak, że funkcja “funkcja” czyści konsolę, a następnie wypisuje coś swojego. Ale chcę, żeby pomimo wyczyszczenia konsoli widniał ten napis “Lorem ipsum” na samej górze. “Funkcja” jest używana w skrypcie wielokrotnie i nie mogę przewidzieć co się znajdzie przed nią.
Teoretycznie mogę jej przekazywać parametr do wyświetlenia, jednakże nie chcę powtarzać kodu. No chyba, że:

def funkcja(string) puts string x = gets system('cls') puts string puts "something" end funkcja "Lorem ipsum"
ale wolałbym (a nawet potrzebuję) rozwiązanie z wykonywaniem poprzedniej instrukcji

Nie ma. Użyj argumentu przekazywanego do metody.

Wszystko zależy od tego czy Ty kontrolujesz ten kod, który jest przed wywołaniem “funkcja”. Jeżeli tak, to ja bym zrobił coś w stylu:

[code]class OutputRecorder
attr_reader :records

def initialize
@records = []
end

def puts(*args)
records << args
Kernel.puts *args
end
end

out = OutputRecorder.new

out.puts “Lorem ipsum”

funkcja(out)[/code]
Ten kod poniżej OutputRecorder pewnie powinien być w jakiejś klasie, ale nie wiem do końca co chcesz zrobić, więc podaję w takiej formie.

Dobra opublikuję prawie dokładny mój kod:

[code]def show
puts “Lorem ipsum”
end
def clean
x = gets
system(‘cls’)
puts x
end

show
clean[/code]
I w tym momencie owszem, jest wyświetlona zmienna x, ale ja chcę żeby pomimo wyczyszczenia konsoli nadal widniało Lorem Ipsum. Oczywiście mam wiele różnych “show” (show1, show2, show3, show4), które wyświetlają różne napisy. Nie byłoby problemu, gdyby show miało “return”, a nie “puts”. Nie chcę już zmieniać koncepcji. Chyba że do show dam i “puts” i “return”, a potem tylko

clean(show)

Zobaczę czy zadziała.


Okej działa taka metoda. Może nie do końca właściwa, ale działa ^^ Jakbyście mieli lepsze propozycje to możecie napisać, będę tu jeszcze zaglądał przez pewien czas.