假設我有一個函數的重載主力:是否可以檢測Matlab函數的忽略輸出?
[a b c d] = lotsOfComputation();
在一些使用情況下,我可能只需要一個或兩個的輸出。在這些情況下,我忽略了~
的輸出。是否有可能在lostOfComputation
函數中檢測到這個?
(是的,我知道的更優雅的解決方案是一個重構爲獨立的功能。我已經這樣做了的立即使用情況,但問題仍然在我的腦海。)
假設我有一個函數的重載主力:是否可以檢測Matlab函數的忽略輸出?
[a b c d] = lotsOfComputation();
在一些使用情況下,我可能只需要一個或兩個的輸出。在這些情況下,我忽略了~
的輸出。是否有可能在lostOfComputation
函數中檢測到這個?
(是的,我知道的更優雅的解決方案是一個重構爲獨立的功能。我已經這樣做了的立即使用情況,但問題仍然在我的腦海。)
直接回答你的問題,不是我所知道的。但是,如果您問這是爲了節省潛在的浪費計算,您可以將您的功能拆分爲子功能,但使用deal
保留原始文章中的一般語法。
例如,如果你一直想a
和b
從lotsOfComputation
,你可以改造你的功能
[a b] = lotsOfComputation();
然後你可以有c
和兩個獨立的計算d
[c] = cComp();
[d] = dComp();
你可以然後寫你的原始功能爲
[a b c d] = deal(lotsOfComputation(), cComp(), dComp());
如果你想忽略的c
或d
輸出,你可以替換的交易功能的空值的函數調用,即
[a b ~ d] = deal(lotsOfComputation(), 0, dComp());
我知道這並不直接回答這個問題,但它可能是理論上的興趣:)
MATLAB確實有檢測輸出是否被指定的方法。 'hist'函數就是一個例子。沒有輸出,它繪製直方圖。通過輸出,它會返回每個箱的數量和箱距。你可以試着查看它的文檔,看看是否有辦法檢測一個省略的輸出變量。 (我會這樣做,但是我的機器現在已經連續運行了數小時) – Doresoom