Répondre

0

Je ne peux pas dire que j'ai jamais vu cela comme une expression valide. 12 devrait être défini comme un type. Supposons que 12 est un nombre entier. Un type entier sait seulement qu'il s'agit d'un entier et dans la plupart des langages il y a des fonctions/méthodes intégrées pour les entiers. Pour que cette expression soit valide, vous devez définir un type de poids et, au sein de cet objet, vous pouvez définir des méthodes de conversion ou hériter des types enfants avec des méthodes de conversion.

0

Vous pourriez le faire dans Ruby à cause de son sucre syntaxique.

En fait, il y a une gemme de rubis - alchemist - vous devriez vérifier. Par exemple, vous pouvez écrire: 10.miles.to.meters

1

Pas exactement dans cette syntaxe, mais vous pouvez jeter un oeil à Frink: https://frinklang.org

syntaxe Frink est similaire à Google Calculator ou Wolfram Alpha, mais pas exactement la même chose. Alors que Google et Wolfram Alpha utilisent le mot-clé in pour déclencher la conversion d'unités, Frink utilise l'opérateur ->. Donc, dans frink, ce qui suit est un code source valide:

// Calculate length of Wifi antenna: 
    lightspeed/(2.4GHz)/4 -> inches 

Comme je l'ai mentionné, cette syntaxe est similaire à Google. Pour référence, le même calcul dans la syntaxe Google est speed of light/2.4GHz/4 in inches. Frink est antérieur à et à Google calculatrice et Wolfram Alpha. J'étais au courant de la frénésie au début des années 2000.

Frink est conscient de l'unité. Un nombre en frange a toujours une unité même si cette unité est simplement "scalaire" (pas d'unités). Donc, pour déclarer une variable qui est de 12 livres que vous feriez:

var x = 12 pounds 

Pour vous convertir feriez:

x -> kg 

Ou vous pouvez simplement écrire l'expression:

12 pounds -> kg 
1

En Smalltalk, vous pouvez exprimer cela comme

12 pounds inKilograms 

Notez cependant que c'est à vous de programmer les deux messages pounds et inKilograms (il y a aussi des bibliothèques qui font ce genre de choses). Mais le point clé est que l'expression ci-dessus est parfaitement valide dans Smalltalk (même si ces messages n'existent pas).