Używam if yield self[x]
do oceny, czy blok zwraca wartość true lub false. Muszę uczynić ten blok opcjonalnym i widzę sugestie dotyczące wykonania yield if block_given?
. Jak mogę połączyć te dwie linie?Czy istnieje lepszy sposób na uzyskanie wartości z bloku w Ruby?
7
A
Odpowiedz
7
Czy próbowałeś tego?
if block_given? && yield(self[x])
# ...
end
Ten warunek nie będzie zawsze, gdy blok nie jest podana, to znaczy to, co jest w miejscu # ...
nie będą oceniane. Jeśli chcesz warunek do osiągnięcia sukcesu, jeśli nie blok jest podana, to zrobić w zamian:
if !block_given? || yield(self[x])
# ...
end
albo to, choć myślę, że to trudniejsze do odczytania:
unless block_given? && !yield(self[x])
# ...
end
3
Spróbuj:
if block_given?
if yield self[x]
# Do something....
end
end
0
Możesz dodać warunek do całego bloku if
:
if yield self[x]
# do something...
end if block_given?
Dlaczego nie pokazać nam, co próbujesz zrobić, zamiast go opisać? W ten sposób możemy naprawić twój kod, zamiast próbować wrzucić coś do gry? –