TArray <string>을 TStringDynArray로 변환하는 효율적인 방법이 있습니까?

stanleyxu2005

내 코드의 상당 부분 ( delphi-dutil 등)은 TStringDynArray. 이제 모든 키 a TDictionary<string, string>TStringDynArray. 불행하게도 나는 단지 발견 TDictionary.Keys.ToArray이다, TArray<T>.

나는 원시 콘텐츠를 복사 할 수있는 간단한 복사 기능을 쓸 수 있습니다 알고 있지만, 내는 TStringDynArray내가 변환하는 효율적인 방법을 찾고 있으므로, 보통 (약 10000 개 항목) 매우 큰 TArray<string>TStringDynArray.

function ConvertToStringDynArray(const A: TArray<string>): TStringDynArray;
var
  I: Integer;
begin
  assert(A <> nil);
  SetLength(Result, Length(A));
  for I := 0 to Length(A) - 1 do
    Result[I] := A[I];
end;
데이비드 헤퍼 넌

가장 좋은 해결책은 코드베이스의 모든 동적 배열을 TArray<T>. 제네릭 유형에는 훨씬 덜 엄격한 유형 호환성 규칙이 있기 때문에 이것이 가장 좋습니다. 따라서 코드베이스 전체에서이 단계를 수행하는 것이 좋습니다.

그러나 이는 사용자가 제어하는 ​​코드에서만 실행 가능합니다. 수정할 수없는 코드 및 라이브러리와 인터페이스 할 때 문제가 있습니다.

이 모든 것의 근원에서 이러한 모든 유형은 동적 배열이며 단일의 공통 구현을 공유합니다. 이는 차단이 구현이 아닌 언어 수준에 있음을 의미합니다. 따라서 캐스트는 컴파일러가 할당을 허용하도록 안전하게 사용할 수 있습니다.

var
  DynArr: TStringDynArray;
  GenericArr: TArray<string>;
....
DynArr := TStringDynArray(GenericArr);
GenericArr := TArray<string>(DynArr);

함수 호출 인수에서 이러한 캐스트를 사용할 수 있습니다.

유형 검사를 억제하기 때문에 코드 전체에 이러한 캐스트를 분산시키고 싶지는 않습니다. 도우미 기능으로 중앙 집중화하십시오. 예를 들면 :

function StringDynArray(const arr: TArray<string>): TStringDynArray;
begin
  Result := TStringDynArray(arr);
end;

마지막 코멘트 :이 관련 질문이 흥미로울 수 있습니다. TArray <X>를 X 배열로 형변환하는 것이 안전합니까?

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

<List <List <StrongType.String >>을 List <string>으로 변환하는 효율적인 방법

분류에서Dev

forloops로 효율적인 출력을 얻는 그럴듯한 비단 법적인 방법이 있습니까?

분류에서Dev

파일을 데이터베이스에로드하는 리소스 효율적인 방법이 있습니까?

분류에서Dev

amixer로 모든 라인을 설정하는 효율적인 방법이 있습니까?

분류에서Dev

이것을 배열별로 그룹화하는 더 효율적인 방법이 있습니까?

분류에서Dev

str을 정수로 변환하는 효율적인 방법

분류에서Dev

파이썬에서 순차적으로 파일 이름을 변경하여 변수를 저장하는 효율적인 방법이 있습니까?

분류에서Dev

이 배열을 정렬하는 더 효율적인 방법이 있습니까?

분류에서Dev

이것을 작성하는 더 효율적인 방법이 있습니까?

분류에서Dev

이것을 코딩하는 더 효율적인 방법이 있습니까?

분류에서Dev

이 기능을 실행하는 더 효율적인 방법이 있습니까?

분류에서Dev

std :: vector <std :: tuple <>>을 torch :: Tensor로 변환하는 가장 효율적인 방법은 무엇입니까?

분류에서Dev

두 컬렉션을 결합하는 효율적인 방법이 있습니까?

분류에서Dev

항목 목록을 "제거"하는 효율적인 방법이 있습니까?

분류에서Dev

문자열을 연결하는 효율적인 방법이 있습니까?

분류에서Dev

이것을 더 효율적으로 만드는 방법이 있습니까?

분류에서Dev

효율적인 방법으로 데이터 프레임의 값을 다른 값으로 대체하는 적절한 방법이 있습니까?

분류에서Dev

플로트를 감싸는 더 효율적인 방법이 있습니까?

분류에서Dev

좌표를 사용하여 지리적 위치까지의 거리별로 객체 배열을 정렬하는 효율적인 방법이 있습니까?

분류에서Dev

R-이 반복적 인 작업을 수행하는 효율적인 방법이 있습니까?

분류에서Dev

int 배열을 바이트 배열로 또는 그 반대로 변환하는 가장 효율적인 방법은 무엇입니까?

분류에서Dev

레이블의 2 차원 배열을 레이블에서 좌표로 맵으로 변환하는 효율적인 방법은 무엇입니까?

분류에서Dev

수천 개의 목록을 경계 값과 비교하는 계산적으로 더 효율적인 방법이 있습니까? 파이썬

분류에서Dev

매개 변수 맵을 정렬하는 효율적인 방법이 있습니까?

분류에서Dev

효율적으로 읽을 수 있도록 스마트 계약에서 많은 데이터를 인덱싱하는 좋은 방법이 있습니까?

분류에서Dev

반복적 인 기능을 처리하는 더 효율적인 방법이 있습니까?

분류에서Dev

값이 세트에 있는지 확인할 때 목록을 세트로 변환하는 것이 전반적으로 더 효율적입니까?

분류에서Dev

.xib 또는 .storyboard를 사용하지 않는 iPad 애플리케이션을 iPhone 스케일로 축소하는 더 효율적인 방법이 있습니까?

분류에서Dev

자녀가없는 부모 기록을 추적하는 더 효율적인 방법이 있습니까?

Related 관련 기사

  1. 1

    <List <List <StrongType.String >>을 List <string>으로 변환하는 효율적인 방법

  2. 2

    forloops로 효율적인 출력을 얻는 그럴듯한 비단 법적인 방법이 있습니까?

  3. 3

    파일을 데이터베이스에로드하는 리소스 효율적인 방법이 있습니까?

  4. 4

    amixer로 모든 라인을 설정하는 효율적인 방법이 있습니까?

  5. 5

    이것을 배열별로 그룹화하는 더 효율적인 방법이 있습니까?

  6. 6

    str을 정수로 변환하는 효율적인 방법

  7. 7

    파이썬에서 순차적으로 파일 이름을 변경하여 변수를 저장하는 효율적인 방법이 있습니까?

  8. 8

    이 배열을 정렬하는 더 효율적인 방법이 있습니까?

  9. 9

    이것을 작성하는 더 효율적인 방법이 있습니까?

  10. 10

    이것을 코딩하는 더 효율적인 방법이 있습니까?

  11. 11

    이 기능을 실행하는 더 효율적인 방법이 있습니까?

  12. 12

    std :: vector <std :: tuple <>>을 torch :: Tensor로 변환하는 가장 효율적인 방법은 무엇입니까?

  13. 13

    두 컬렉션을 결합하는 효율적인 방법이 있습니까?

  14. 14

    항목 목록을 "제거"하는 효율적인 방법이 있습니까?

  15. 15

    문자열을 연결하는 효율적인 방법이 있습니까?

  16. 16

    이것을 더 효율적으로 만드는 방법이 있습니까?

  17. 17

    효율적인 방법으로 데이터 프레임의 값을 다른 값으로 대체하는 적절한 방법이 있습니까?

  18. 18

    플로트를 감싸는 더 효율적인 방법이 있습니까?

  19. 19

    좌표를 사용하여 지리적 위치까지의 거리별로 객체 배열을 정렬하는 효율적인 방법이 있습니까?

  20. 20

    R-이 반복적 인 작업을 수행하는 효율적인 방법이 있습니까?

  21. 21

    int 배열을 바이트 배열로 또는 그 반대로 변환하는 가장 효율적인 방법은 무엇입니까?

  22. 22

    레이블의 2 차원 배열을 레이블에서 좌표로 맵으로 변환하는 효율적인 방법은 무엇입니까?

  23. 23

    수천 개의 목록을 경계 값과 비교하는 계산적으로 더 효율적인 방법이 있습니까? 파이썬

  24. 24

    매개 변수 맵을 정렬하는 효율적인 방법이 있습니까?

  25. 25

    효율적으로 읽을 수 있도록 스마트 계약에서 많은 데이터를 인덱싱하는 좋은 방법이 있습니까?

  26. 26

    반복적 인 기능을 처리하는 더 효율적인 방법이 있습니까?

  27. 27

    값이 세트에 있는지 확인할 때 목록을 세트로 변환하는 것이 전반적으로 더 효율적입니까?

  28. 28

    .xib 또는 .storyboard를 사용하지 않는 iPad 애플리케이션을 iPhone 스케일로 축소하는 더 효율적인 방법이 있습니까?

  29. 29

    자녀가없는 부모 기록을 추적하는 더 효율적인 방법이 있습니까?

뜨겁다태그

보관