на каком языке можно преобразовать массив в объект?

#php #language-agnostic

#php #не зависит от языка

Вопрос:

Я хотел бы спросить, существует ли (кроме PHP) язык, который может cast преобразовать простой массив в свой объект.

В PHP вы можете сделать:

 $obj = (object) $array;

echo $obj->key1;
  

Есть ли какой-либо эквивалент на другом языке? (java, c # и т.д.)

Комментарии:

1. имеет ли этот вопрос какую-либо практическую цель?

2. Почему? Вы в основном спрашиваете «Могут ли другие языки ухудшать семантическое значение идентификатора». AFAIK большинство других языков имеют похожие конструкции, Java, C # (аналогичный синтаксис), c (void *), Javascript и т.д.

3. @captain: не знал о том, чтобы опубликовать ответ, который я выберу

Ответ №1:

Большинство других языков имеют похожие конструкции.

  • Java C # делает это с аналогичным синтаксисом
  • В C это было бы похоже на приведение к a (void *)
  • Javascript будет рассматривать массив как любой другой вид объекта.

Комментарии:

1. Давайте оставим C, потому что у него нет object 🙂

2. В этом контексте, я думаю, structs его вполне можно рассматривать как объект. в c также нет типа объекта.

Ответ №2:

Я думаю, что критическим моментом здесь является не приведение, а скорее тот факт, что впоследствии доступ к ключам массива осуществляется так, как если бы они были обычными членами объекта.

Во многих языках массивы (карты) являются объектами, но они не предоставляют ключи массива в виде полей, потому что массивы динамичны по своей природе, но в статических языках поля объекта фиксированы. Это означает, что Java и C # не имеют сопоставимой функции — они обрабатывают массивы как объекты, и у них есть приведения для этого, но они не дадут вам ту же семантику.

Итак, остальные кандидаты — динамические языки, такие как Python или Javascript. Ни один из них, о котором я знаю, не имеет конструкции, которая в деталях напоминала бы PHPs typecast. Можно было бы написать вспомогательные функции для преобразования из массивов / словарей в объекты на обоих упомянутых мною языках.

Личное заявление: Я действительно думаю, что это довольно сомнительная функция в PHP.