Юля поддерживает динамическое расширение объекта а-ля C #?

В C # можно иметь динамический объект с полями, определенными во время выполнения, с помощью объектов expando. Пример:

dynamic contact = new ExpandoObject();
contact.Name = “Patrick Hines”;
contact.Phone = “206-555-0144”;

Как видите, объект contact является динамическим в том смысле, что мы можем устанавливать поля в объекте, без предварительного объявления структуры объекта. Я понимаю, что в Юлии у нас может быть параметр / переменная без объявленного типа, например:

function setProp1(obj) obj.prop1=1 end

Но, насколько я понимаю, объект obj должен быть создан из типа с полем prop1. Если prop1 где-то не объявлен как поле, setProp1 не может динамически устанавливать поле prop1. Если мне нужен полный динамизм, и я не хочу беспокоиться о производительности, есть ли способ создать «объекты expando» в Julia?


person gabomgp    schedule 18.09.2017    source источник
comment
На этой странице предлагается использовать _ 1_. Типы Джулии не поддерживают динамическое добавление полей во время выполнения.   -  person Robert Harvey    schedule 19.09.2017
comment
Надеюсь, когда-нибудь будет создан более удобный синтаксис. Синтаксис объекта a la expando может помочь людям, пришедшим из Python или других полностью динамических языков.   -  person gabomgp    schedule 19.09.2017
comment
@RobertHarvey, вы связали старый документ (0.4), стабильный (сейчас 0.6) - ›docs.julialang.org/en/stable/manual/noteworthy-differences (например, задокументировано 12 отличий от Python в версии 0.4 и только 10 в версии 0.6), пожалуйста, отредактируйте свой комментарий, и я удалю свой :)   -  person Liso    schedule 19.09.2017


Ответы (1)