Ruby type if statements in MATLAB
I do miss Ruby type ‘if’ statements in MATLAB, so to overcome that I figured there has to be a simple way.
In ruby I could say: a = 1 if true. But in MATLAB one has to write three lines to get it done(I know, I can be lazy at times!). In MATLAB it would be:
if true
a = 1;
end
To get similar statements as in Ruby I would be using a keyword ‘do’. So in MATLAB my statements would look like :
do a = 1 if true.
Not too bad, better than typing out three lines. So essentially, ‘do’ will be a function which will take in variable arguments and parse for if conditions and evaluate it for you in the caller workspace. I have left out the error checking. But here is the code:
%/
% Developer : Srinivas Muddana (srinivas.muddana@gmail.com)
% All code (c)2012 Srinivas Muddana. all rights reserved
%
% do a = a*-1 if(a<0);
function do(varargin)
%expr = size(2*length(varargin) -1) ;
expr = '';
for(ii = 1:length(varargin))
expr = [expr ' ' varargin{ii}];
end
[a,b, c, d] = regexp(expr, '(.*)if(.*)');
bodyIndexRange = c{1}(1,:);
ifBodyStr = expr(bodyIndexRange(1):bodyIndexRange(2));
condIndexRange = c{1}(2,:);
ifCondStr = expr(condIndexRange(1):condIndexRange(2));
code = ['if(' ifCondStr ')' char(10) ...
ifBodyStr ';' char(10)...
'end' char(10)];
evalin('caller', code);
end
https://gist.github.com/1222462