Одна из возможностей - создать приватную версию функции input
, которая затеняет встроенную функцию. Каждый раз, когда он вызывается, он возвращает значение из заранее определенного набора значений. Вы можете поддерживать состояние, используя global / persistent переменную (счетчик, чтобы отслеживать, сколько раз была вызвана функция).
По сути, вы будете создавать заглушку метода до макет поведение реальной функции.
Вот пример, чтобы лучше объяснить мою идею:
/ somepath / частный / input.m
function ret = input(prompt, varargin)
%# counter
persistent count
if isempty(count), count = 1; end
%# hard-coded values to return
values = {
1 2 'sin(x)' ...
1 3 'exp(x)' ...
2 3 2 ...
3 2 '--' ...
};
%# display the prompt message
disp([prompt '[SIMULATED INPUT #' num2str(count) ']'])
%# return value
ret = values{count};
%# increment counter
count = count + 1;
if count>12
count = 1;
end
end
/ somepath / hw1.m
function hw1
%# image this is a sample homework file,
%# using the standard INPUT function to ask for input from the user
%# and do something useful with it :)
num1 = input('enter a number: ');
num2 = input('enter a second number: ');
str = input('enter a string: ', 's');
fprintf('You entered: %d %d %s\n',num1,num2,str);
num1 = input('enter a number: ');
num2 = input('enter a second number: ');
str = input('enter a string: ', 's');
fprintf('You entered: %d %d %s\n',num1,num2,str);
num1 = input('enter a number: ');
num2 = input('enter a second number: ');
num3 = input('enter a third number: ');
fprintf('You entered: %d %d %d\n',num1,num2,num3);
num1 = input('enter a number: ');
num2 = input('enter a second number: ');
str = input('enter a string: ', 's');
fprintf('You entered: %d %d %s\n',num1,num2,str);
end
Это вывод, который вы получаете:
enter a number: [SIMULATED INPUT #1]
enter a second number: [SIMULATED INPUT #2]
enter a string: [SIMULATED INPUT #3]
You entered: 1 2 sin(x)
enter a number: [SIMULATED INPUT #4]
enter a second number: [SIMULATED INPUT #5]
enter a string: [SIMULATED INPUT #6]
You entered: 1 3 exp(x)
enter a number: [SIMULATED INPUT #7]
enter a second number: [SIMULATED INPUT #8]
enter a third number: [SIMULATED INPUT #9]
You entered: 2 3 2
enter a number: [SIMULATED INPUT #10]
enter a second number: [SIMULATED INPUT #11]
enter a string: [SIMULATED INPUT #12]
You entered: 3 2 --