단지 기록을 위해 int
은 다소 불리한 변수 이름 선택입니다. 옆으로, 당신은
를 다음과 같이 당신이 원하는 무엇을 할 수
는
foo
는 사용자 입력이 문자열을 보유하고있는 변수 말한다. 다음과 같은 작업을 수행 할 수 있습니다 다음과 같이
int
(지금
foo
가)
bar
라는 이름의 필드 구조입니다 가정
% eliminate leading/trailing whitespace
foo = strtrim(foo);
a = regexp('[a-zA-Z][a-zA-Z0-9_]*',foo));
if numel(a) == 0
fprintf('Sorry, %s is not a valid variable name in matlab\n', foo);
elseif a ~= 1
fprintf('Sorry, %s is not a valid variable name in matlab\n', foo);
elseif 2 == exist(foo,'var')
fprintf('Sorry, %s already in use as a variable name.');
else
eval([foo,' = int']);
end
, 당신은 줄을 읽을 수 있습니다
barVal = eval([foo,'.bar']);
이 모두 다소 투박하다.
또 다른 접근법은 연관 배열을 사용하고 사용자가 배열에 다양한 int 값을 저장하게하는 것입니다. 연관 배열을위한 Matlab 방식은 Maps입니다. 그것은이 문제에 대해 제가 선호하는 접근 방법이 될 것입니다. 다음은 위와 같은 변수를 사용하는 예입니다.
nameValueMap = containers.Map;
nameValueMap(foo) = int;
상기는 가변 int
의 데이터와 foo
에 저장된 이름 사이의 관계를 생성한다.
intValue = nameValueMap(foo);
왜 사용자가 변수 이름을 변경 할 것이다 :
방금 다음을 수행, 데이터에 얻으려면? 일반적으로 사용자가 프로그램의 기본 구현에 영향을 미치도록하는 것은 좋지 않습니다. 단순히이 데이터를 사용자가 지정한 문자열과 연관시키지 않는 이유는 무엇입니까? –
변수가 'int'로 불리는 이유는 무엇입니까? 이름을 바꾸려하는 이유는 무엇입니까? 이미 다른 사람이 만든 변수입니까? – NKN
세로, 강도 및 시간을 나타내는 세 가지 변수 인 "vert" "int"및 "time"이 있습니다. 나는이 모든 것을 사용자 이름에 의존하는 구조로 만들고 싶습니다. 이것은 AFM 시스템을위한 것이며 사용자는 테스트중인 캔틸레버의 이름을 입력하려고합니다. 사용자는 여러 개의 캔틸레버를 테스트 할 것이고 각 캔틸레버에 어떤 데이터가 있는지를 기록하는 방법을 원합니다. 따라서 이름을 식별 도구로 사용하는 다른 varialbe 또는 strucutre ---의 이름을 바꾸거나 작성합니다. –