2008-12-01 8 views
1

En langage C# lorsque vous faites référence à un élément de tableau, vous pouvez écrire:Langage de programmation où vous pouvez faire référence à un élément de tableau par. (point)

myclass.my_array ['element_name'] = new Point (1,1);

Je pense à un élément se référant à ELEMENT_NAME avec le nom en utilisant point à la place de backets:

myclass.my_array.element_name = new Point (1,1);

Savez-vous une langue où existe une syntaxe similaire à l'exemple ci-dessus?

Que pensez-vous de cet exemple de référence à un élément de tableau? Est-ce bon ou est-ce aussi mauvais que mon écriture en anglais?

Amitiés

Répondre

3

Vous pouvez faire presque certainement cela dans une langue dynamique, en manipulant la propriété/accès variable comme indexeur si la propriété spécifiée/variables n'existait réellement. Je suspecte que beaucoup de langages dynamiques fournissent déjà cette fonctionnalité dans quelques secteurs.

Il est possible que dans C# 4, vous serez en mesure de faire vos objets se comportent comme si vous voulez vraiment. Cependant, je suis d'accord avec le jugement implicite dans la question de Mohit - je ne vois aucune raison de considérer ceci plus lisible que d'utiliser la syntaxe plus commune de l'indexeur, et il confondra les gens habitués aux indexeurs ressemblant à des indexeurs.

Un domaine où je voudrais tout à fait peut-être faire quelque chose comme ça serait une API XML, où une propriété indiquerait « prendre le premier élément du nom donné »:

XElement author = doc.Root.Posts.Author; 

C'est tout à fait propre - Pour les cas spécifiques où c'est ce que vous voulez. N'essayez pas de l'appliquer trop généralement ...

+0

Votre exemple XML ressemble presque à l'extension E4X de Javascript. http://en.wikipedia.org/wiki/E4X – akuhn

+0

@Adrian: Bien sûr - c'est une chose naturelle à faire avec un langage dynamique. Je serais surpris si c'était radicalement différent :) –

1

Quel serait l'avantage d'une telle syntaxe pour vous?

Si vous avez des noms de correctifs, pourquoi ne pas créer une classe avec des propriétés?

1

REXX a le concept de stems, où vous pouvez dire x.1, x.2 x.bob et ceux-ci se réfèrent aux éléments de tableau x [1], x [2] et x ['bob'] respectivement.

En plus LotusScript (dans les notes) vous permet de traiter les bases Notes de cette façon, où db.get (« fieldname ») est le même que db.fieldname.

Je l'ai utilisé le REXX un un peu (car il n'y a pas d'autre choix), mais quand je l'ai Codé pour les bases de données Notes, j'ai préféré la voie get/mettre de faire les choses.

1

Lua tables ont a.x que le sucre syntaxique pour un [ "x"]. Les tables Lua sont des tableaux associatifs qui peuvent être utilisés pour représenter des tableaux, des hachages et des enregistrements d'autres langages. Le sucre aide à rendre le code plus lisible en illustrant l'intention (Record? Array? Hashtable?), Bien que cela ne change rien à la langue.

0

Peut-être que vous êtes à la recherche d'une classe ou struct si vous vous voulez utiliser le nom de l'élément comme un champ/propriété.

7

JavaScript fait exactement ce que vous décrivez.En JavaScript, chaque objet est juste une carte des noms de propriété aux valeurs. L'opérateur bracket renvoie simplement une propriété par son nom (ou par sa valeur dans le cas d'un index entier). Vous pouvez vous référer aux propriétés nommées en utilisant simplement un point, mais vous ne pouvez pas le faire avec des indices entiers. This page décrit l'opérateur de parenthèse et la notation de point dans le détail.

Questions connexes