@lasols
Студент, изучаю c#.

У меня есть .dll файл на c# с созданным алгоритмом TimSort. Главный статический метод — Sort. Как использовать эти методы в Wolfram 14.1?

Метод Sort:
public static List<double> Sort(List<double> mainList, bool enterCompare = true)

Или метод SortArray:
public static double[] SortArray(double[] mainArray, bool enterCompare = true)


Код на вольфраме:
Needs["NETLink`"];
InstallNET[];
LoadNETAssembly["D:\\work\\Wolfram\\SortTypes.dll"];
LoadNETAssembly["System.Collections"];
Listtype = LoadNETType["System.Collections.Generic.List`1[System.Double]"];
NETType["System.Collections.Generic.List`1[T]", 28];

И когда я вызываю методы Sort и SortArray
list = NETNew[Listtype];
list@Add[3];
list@Add[2];
list@Add[1];
list1 = NETNew[Listtype];
list1 = SortTypes . TimSort::Sort[list];
arr = Timsort`SortArray[{3, 2, 1}]

И list1 и arr получают не отсортированные значения, а как будто строку с заданными параметрами:
"NETObject[System.Collections.Generic.List`1[System.Double]]"
"TimSort`SortArray[{3, 2, 1}]"

И из этих переменных никак не получается извлечь собственно числа.
При этом, если добавить к вызову функции просто набор символов через @, эти же символы будут в результате
In: arr = Timsort`SortArray[{3, 2, 1}]@qweqweqwe;
out: TimSort`SortArray[{3, 2, 1}][qweqweqwe]

Вопрос - как извлечь данные из отсортированных списков.
  • Вопрос задан
  • 29 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы