Czy możliwe jest pobranie wartości zwracanej przez „n-tą” z funkcji bez konieczności tworzenia zmiennych fikcyjnych dla wszystkich n-1
wartości zwracanych przed nią?
Powiedzmy, że mam następującą funkcję w MATLAB:
function [a,b,c,d] = func()
a = 1;
b = 2;
c = 3;
d = 4;
Załóżmy teraz, że interesuje mnie tylko trzecia zwracana wartość. Można to osiągnąć, tworząc jedną fikcyjną zmienną:
[dummy, dummy, variableThatIWillUse, dummy] = func;
clear dummy;
Ale myślę, że to trochę brzydkie . Myślę, że możesz zrobić coś podobnego do jednej z następujących rzeczy, ale nie możesz:
[_, _, variableThatIWillUse, _] = func;
[, , variableThatIWillUse, ] = func;
variableThatIWillUse = func(3);
variableThatIWillUse = func()(3);
Czy są na to eleganckie sposoby, które działają?
Jak dotąd najlepszym rozwiązaniem jest po prostu użycie variableThatIWillUse
zmiennej zastępczej. Dzięki temu nie muszę tworzyć prawdziwej fikcyjnej zmiennej, która zanieczyszcza przestrzeń roboczą (lub którą musiałbym wyczyścić). W skrócie: rozwiązaniem jest użycie variableThatIWillUse
dla każdej zwracanej wartości aż do interesującej. Wartości zwracane po można po prostu zignorować:
[variableThatIWillUse, variableThatIWillUse, variableThatIWillUse] = func;
Nadal uważam, że to bardzo brzydki kod, ale jeśli nie ma lepszego sposobu, to chyba zaakceptuję odpowiedź.