LogoLists вставляет запятые, NetLogo -> Java -> NetLogo

Я передаю список NetLogo из NetLogo в Java (в расширение), а затем снова отправляю его обратно в NetLogo, где я хочу использовать его в качестве параметра для другой процедуры. Но когда я отправляю его обратно в NetLogo, Java-представление LogoList, похоже, изменило его так, что оно содержит запятые, т.е.

[0 0] становится [0, 0], что заставляет NetLogo жаловаться, когда я его передаю. (Он говорит, что ожидал константу.)

Когда я извлекаю список из аргументов в ExtensionCode, я использую args[0].getList().

e: Между прочим, я передаю его обратно в NetLogo в виде строки. Мне очень нужно это сделать, потому что я делаю это как часть итеративной процедуры построения строк. Я надеюсь, что есть еще способ сделать это.

Имеет ли это смысл? Я делаю что-то неправильно? Я предполагаю, что могу превратить LogoList в итератор, а затем создать новый LogoList с помощью LogoListBuilder, но мне было интересно, может ли быть лучший способ: что мне делать, чтобы отправить LogoList обратно в NetLogo без запятых?


person Arthur Hjorth    schedule 10.07.2014    source источник


Ответы (2)


Чтобы преобразовать LogoList (или любое другое значение NetLogo) в строку, не используйте .toString; это подходит только для отладки. Вызов org.nlogo.api.Dump.logoObject в LogoList создаст представление в стиле Logo вместо представления в стиле Java.

person Seth Tisue    schedule 10.07.2014

Я не знаю, может ли это добавить что-то к ответу @Seth, но если вам также нужно создать список на Java, вы также можете использовать его в DefaultReporter:

LogoListBuilder newList = new LogoListBuilder();
// do your stuff... then:
return newList.toLogoList();

таким образом, список будет иметь правильный формат при его обработке в NetLogo.

person user299791    schedule 16.07.2014
comment
Да, я фактически перебрал свои данные и построил LogoListBuilder, а затем использовал метод toLogoList(), чтобы отправить его обратно. К счастью, метод Сета сделал это намного проще. :) - person Arthur Hjorth; 16.07.2014