Wzywam metodę z blokiem;Ruby sprawdź czy blok jest zerowy
method do
"Hello"
end
i metoda jest zdefiniowana jako;
def method
yield
end
i definiując sposób; chcę sprawdzić, czy dany blok jest pusty (zero), czy nie, ponieważ zmienna w metodzie może skończyć się tak;
method do
""
end
Tak w definicji, chcę, aby sprawdzić, czy wydajność blok jest zerowa lub nie. Lubić;
def method
if yield ? yield : "Empty block? Seriously?"
end
Wiem, że powyższe nie działa. Bu to jest to, co chcę osiągnąć.
Należy również pamiętać, że block_given? zawsze będzie "prawdziwy", ponieważ blok jest podawany, nawet jeśli jest to zero lub pusty ciąg.
UPDATE: Jak większość komentarzy/odpowiedzi stwierdza, że pytanie jest niejasne; tutaj jest problem uproszczone poprzez @ndn:
Chcę sprawdzić, czy wynik wykonania bloku jest „pusty” (zero lub „”) bez powołując go jako pierwszy.
Jeśli dobrze cię rozumiem, chcesz wiedzieć, czy wartość zwrócona przez blok to 'nil' lub' "" przed wygenerowaniem. To jest niemożliwe. Jeśli tak nie jest, możesz po prostu przypisać wynik 'yield' do zmiennej i wykonać na nim' nil? 'I' empty? 'Check. – ndn
Tak, masz rację. –
Tak, jeśli przypiszę to tak, jak w odpowiedzi @ WandMaker, daje błąd, jeśli blok nie jest podany. Tak więc mówisz, że nie ma możliwości dowiedzenia się, że zawartość bloku jest zerowa lub "" przed pojawieniem się. Czy jest źródło lub dyskusja itp. Na ten temat, aby dowiedzieć się więcej? Dzięki. –