Не получается проверить через def существование суб-поля суб-объекта
Andrey 23.11.2014 04:38
Сабж.
Или лыжи не едут, или скорее второе.
Задача: через интроспекцию получаю хеш полей/объектов => конкретного объекта
листая хеш хочу "пнуть" произвольное поле/объект в цикле
на предмет существования у него суб-объекта/суб-поля
$Hash[ $.Nested_A[Alice] $.Nested_B[Bob]]
$Str[MyString]
^if(def $Hash.Nested_A){ True }{ False }
^if(def $Hash.Other){ True }{ False }
# На этой строчке выпадаю в Unhandled Exeption: string method not found
^if(def $Str.Some){ True }{ False }
Как бы с одной стороны понятно, что я прошу "суб-поле" объекта класса string который таковых не имеет,
и вообще ссылается что такого "$метода" у него нет.
А с другой стороны, я делаю интроспекцию объекта и получаю пачку его суб-объектов
и хотел бы знать наличие у них определенного поля def-ом
детектить по классу совсем не хочется, т.к. не только hash но и произвольный пользовательский класс
может иметь суб-поле, стало быть перебирать и сопоставлять сначала
$object.CLASS_NAME и только потом попробовать сделать def... как то очень нерадостно
другой вариант, прогонять потом отдельно каждое поле объекта
через ^reflection:fields[$subobject]
чтобы уже там в именах отыскать существование или не_существование поля/объекта.
Массовый перебор кучи только чтобы понять что объекта/поля/перменной нет...
Как это сделать красивее, и можно ли?
- Не получается проверить через def существование суб-поля суб-объекта, Andrey 23.11.2014 04:38
- Ответ, Misha v.3 [M] 23.11.2014 05:07 / 23.11.2014 06:04