Runtime evaluation: Difference between revisions
Content deleted Content added
added zkl |
Added MATLAB example |
||
Line 585: | Line 585: | ||
typeof bar; // 'string' |
typeof bar; // 'string' |
||
</lang> |
</lang> |
||
=={{header|MATLAB}}== |
|||
The eval and evalin functions handles any kind of code. It can handle multi-line code, although it needs the lines to be separated by the newline character. It can even allow you to program at runtime, as illustrated in the last example in the code and output below. Errors can occur when mixing eval statements with regular code, especially "compile-time" errors if the code appears to be missing key elements (ending brackets or end statements, etc). Some of these are also demonstrated. |
|||
<lang MATLAB>function testEval |
|||
fprintf('Expressions:\n') |
|||
x = eval('5+10^2') |
|||
eval('y = (x-100).*[1 2 3]') |
|||
eval('z = strcat(''my'', '' string'')') |
|||
try |
|||
w eval(' = 45') |
|||
catch |
|||
fprintf('Runtime error: interpretation of w is a function\n\n') |
|||
end |
|||
% eval('v') = 5 |
|||
% Invalid at compile-time as MATLAB interprets as using eval as a variable |
|||
fprintf('Other Statements:\n') |
|||
nl = sprintf('\n'); |
|||
eval(['for k = 1:20' nl ... |
|||
'fprintf(''%.3f\n'', k)' nl ... |
|||
'if k == 3' nl ... |
|||
'break' nl ... |
|||
'end' nl ... |
|||
'end']) |
|||
true == eval('1') |
|||
try |
|||
true eval(' == 1') |
|||
catch |
|||
fprintf('Runtime error: interpretation of == 1 is of input to true\n\n') |
|||
end |
|||
fprintf('Programming on the fly:\n') |
|||
userIn = true; |
|||
codeBlock = ''; |
|||
while userIn |
|||
userIn = input('Enter next line of code: ', 's'); |
|||
codeBlock = [codeBlock nl userIn]; |
|||
end |
|||
eval(codeBlock) |
|||
end</lang> |
|||
{{out}} |
|||
<pre>Expressions: |
|||
x = |
|||
105 |
|||
y = |
|||
5 10 15 |
|||
z = |
|||
my string |
|||
Runtime error: interpretation of w is a function |
|||
Other Statements: |
|||
1.000 |
|||
2.000 |
|||
3.000 |
|||
ans = |
|||
1 |
|||
Runtime error: interpretation of == 1 is of input to true |
|||
Programming on the fly: |
|||
Enter next line of code: fprintf('Goodbye, World!\n') |
|||
Enter next line of code: str = 'Ice and Fire'; |
|||
Enter next line of code: words = textscan(str, '%s'); |
|||
Enter next line of code: fprintf('%s ', words{1}{end:-1:1}) |
|||
Enter next line of code: |
|||
Goodbye, World! |
|||
Fire and Ice</pre> |
|||
=={{header|Maxima}}== |
=={{header|Maxima}}== |
||