Есть ли способ иметь одну функцию, которая может возвращать две разные переменные, но только по одному и знать, какой из них возвращается в вызове функции?Функция с различными возвращаемыми переменными
пример: У меня есть следующие функции, в которых только один из выходов является действительным (другой будет [])
function [a,b] = AlternatingOutput (input)
if input == 1
return ONLY A
else
return ONLY B
end
end
и я называем это в сценарии
[a,b] = AlternatingOutput (input)
я хочу способ сказать следующее (псевдокод):
if (function outputs a)
[a,~] = AlternatingOutput(input)
elseif (function outputs b)
[~,b] = AlternatingOutput(input)
end
сценарий работать в цикле, а потом мне нужно новое Допустимых значения а и Ь, поэтому я не могу переписать один из двух с []
Я понимаю, что я мог бы просто написать функцию, которая проверяет, какие переменные быть выходным, но мне было интересно, есть ли более элегантный способ.
Я надеюсь, что я сделал мой вопрос ясен, и я надеюсь, что кто-то может мне ответить :)
Всегда возвращать два значения, но использовать [значение дозорного] (http://stackoverflow.com/questions/22103552/how-to-make-a-sentinel- value-in-matlab) для r "не возвращено". Получите возвращаемые значения 'AlternatingOutput' для имен temp:' [ax, bx] = AlternatingOutput (input) 'и переназначьте их только тогда, когда возвращаемое значение не является дозорным (' if ax ~ = sentinel a = ax; end'. Или пересмотреть функции ввода/вывода, он честно пахнет плохим дизайном. –
просто поместил флаг вместо второго выхода, если флаг равен 1 выходу == a если флаг равен 0 output b – Umar
О, и '[]' может использоваться как контрольный стоимость. –