문제 해결의 객체 지향 방식으로 앨범에 관한 모든 정보가 4 개 들어있는 앨범 유형을 정의하고, 앨범 하나의 배열을 대신 사하는 것입니다 배열.
그런 다음 앨범에 대한 비교를 원하는대로 정의 할 수 있습니다. 다음은 C#의 예는의 (자바에서 매우 유사하다) : 여기
class Program {
static void Main(string[] args) {
Album[] albums = { new Album { artist = "potatotes",
family = "soup",
title = "a",
year=1546 },
new Album { artist = "etc",
family="blabla",
title="blablabla",
year = 1999 }
};
Array.Sort(albums);
}
}
class Album : IComparable<Album> {
public int CompareTo(Album y) {
return family.CompareTo(y.family);
}
public string title { get; set; }
public string artist { get; set; }
public int year { get; set; }
public string family { get; set; }
}
, 우리는 앨범의 가족의 관점에서에서 IComparable 인터페이스를 구현했습니다. 일반적인 개념은 모든 관련 정보를 클래스로 그룹화 한 다음 해당 클래스의 객체에 대한 비교를 해당 필드 중 하나로 정의 할 수 있습니다.
일부 사람들은 C#에서이를 구현하는 데 더 유연한 방법이 있지만 가능한 한 간단하고 언어에 구애받지 않는 것으로 유지하려고합니다.
언어가 사용자 정의 구조를 지원하는 한 복제가 가능해야하지만 AutoIT가이를 지원하는지조차 모르겠습니다. 이 경우 4 개의 배열을 유지하고 배열 중 하나를 정렬하고 동시에 3 개의 다른 모든 배열에 스왑 연산을 복제하는 사용자 정의 정렬 함수를 구현해야합니다. 그래도 훨씬 더 많은 일이 있습니다.
+ 1.하지만 AutoIt에는 "Object Oriented"와 같은 것이 없습니다. –
컬렉션은 AutoIt이 가능하지만, 그들은 매우 유연하지 않은 : = [코드] $ COL = ObjCreate ("Scripting.Dictionary") $ col.Item ("아티스트") = "소닉 유스" [/ 코드] 하지만 컬렉션 정렬을 구현하는 방법을 볼 수는 없지만 4 개의 배열을 단일 n * 4D 배열로 변경하는 것이 더 간단한 경로 일 수 있습니다. Hummmm ... = |) arkSprout = – DarkSprout
하나의 4D 어레이가 어떤 용도로도 사용되지 않는다고 생각합니다. 언어가 맞춤 구조에 대한 적절한 지원을 제공하지 않는다면 4 개의 배열을 사용하십시오. 정상적으로하는 것처럼 1 배열에 대한 정렬 루틴을 구현하십시오. 이제 정렬 루틴에서 요소를 이동할 때마다 다른 3 개의 배열에서도 동일한 작업을 수행하여 항상 서로 동기화 상태를 유지합니다. 루틴이 완료되면 4 개의 모든 배열이 그 중 하나에 따라 정렬됩니다. 그렇지 않으면 더 나은 프로그래밍 언어로 전환 할 수 있는지 확인하십시오 ... – Asik