EVALIN cannot execute a return?
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I am trying to create a function that aborts whatever mfile is currently executing after issuing a warning. I see no way of avoiding EVALIN for this and so implemented the following,
function abort_and_warn
warning 'Aborting'
evalin('caller', 'return');
end
However, a simple test of this code in R2020a,
function test
disp 'do this'
abort_and_warn
disp 'do that'
end
fails to block the execution of the final line:
>> test
do this
Warning: Aborting
> In test>abort_and_warn (line 12)
In test (line 5)
do that
Is this an undocumented limitation of EVALIN? I see nothing here to imply that EVALIN should be unable to issue the return command in the caller wokspace.
4 Commenti
Bruno Luong
il 7 Ago 2020
A simple EVAL('RETURN') is not execute either
function foo
eval('return');
fprintf('this will be printed out\n');
end
>> foo
this will be printed out
>>
Risposta accettata
Bruno Luong
il 7 Ago 2020
Modificato: Bruno Luong
il 7 Ago 2020
Yes it is written in the doc.
From EVALIN/EVAL document page
...
expression — Expression to evaluate
character vector | string scalar
Expression to evaluate, specified as a character vector or string scalar. expression must be a valid MATLAB expression and must not include any MATLAB keywords."
>> iskeyword('return')
ans =
logical
1
1 Commento
Bruno Luong
il 7 Ago 2020
Modificato: Bruno Luong
il 7 Ago 2020
However
eval('global foo')
works and global is a keyword.Go figure....
That exposes few of the hidden paradoxal gems of MATLAB.
Più risposte (1)
Fangjun Jiang
il 7 Ago 2020
It seems that "return" was not executed in the "caller" workspace as it is supposed to by evalin().
But would a "regular" approach work by passing some kind of flag or value?
In function abort_and_warn, return with a flag or a special value after issuing the warning.
In function test, check the return value of function abort_and_warn, then execute return.
0 Commenti
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!