Czy możliwe jest pobranie wartości zwracanej przez „n-tą” z funkcji bez konieczności tworzenia zmiennych fikcyjnych dla wszystkich n-1wartoś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 variableThatIWillUsezmiennej 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 variableThatIWillUsedla 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ź.