#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.