문자열로 채워진 셀형 배열을 반복 한 다음 다른 함수 호출에서 문자열을 사용하고 싶습니다. 이렇게 :
flavorDb = containers.Map();
flavorDb('banana') = 'awful';
flavorDb('lemon') = 'sour';
flavorDb('orange') = 'delicious';
for fruit = {'banana' 'lemon' 'orange'}
disp([fruit ' is ' flavorDb(fruit)]);
end
인쇄물의 의심스러운 문법은 제쳐두고 있습니다. 검색 결과 flavorDb
는 다음과 같습니다.
Specified key type does not match the type expected for this container.
변수 fruit
에 {'banana'}
대신 'banana'
. 이 작업을 수행하는 더 좋은 방법은 무엇입니까?
이것은 여러 가지 방법으로 달성 할 수 있습니다. 코드에 복잡성이 추가되는 방식에 따라 다음 중 하나가 적절할 수 있습니다.
for
셀형 배열 에서 반복기를 사용하고 각 결과의 압축을 풉니 다.disp([fruit{:} ' is ' flavorDb(fruit{:})]);
또는
disp([fruit{1} ' is ' flavorDb(fruit{1})]);
for
인덱스 배열 에서 반복기를 사용하고 셀형 배열로 인덱싱fruit = {'banana' 'lemon' 'orange'};
for iFruit = 1:numel(fruit)
disp([fruit{iFruit} ' is ' flavorDb(fruit{iFruit})]);
end
cellfun
배열 요소를 반복cellfun(@(fruit) disp([fruit ' is ' flavorDb(fruit)]), {'banana' 'lemon' 'orange'});
values
메서드를 사용하여 containers.Map
값을 입력과 동일한 모양의 배열에 매핑합니다.fruit = {'banana' 'lemon' 'orange'};
output = [fruit; flavorDb.values(fruit)];
fprintf('%s is %s\n', output{:});
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다