2016-10-18 1 views
0

Lire à partir de StringMorph, comment écrire du code pour faire des maths.Smalltalk Pharo

contents := InputField contents asNumber

Comment pourrais-je puis ajouter une fonction mathématique à ce - (1,8 + 32) pour modifier le numéro de la chaîne?

J'ai du mal à trouver des exemples en ligne.

+0

Si je Vous avez bien compris, vous devez lire une chaîne brute (_1.8 + 32_) en utilisant le message 'contents'. Ensuite, vous devez l'analyser et extraire les nombres et les opérations, puis implémenter la logique derrière le calcul. – Uko

+1

Je l'ai lu plus simplement comme "comment faire de l'arithmétique dans Smalltalk?" ... ce serait tout simplement 'result: = contents - (1.8 + 32)'. Pour revenir au champ de saisie, vous utiliserez probablement le setter 'InputField contents: result asString'. – JayK

+0

Si vous souhaitez simplement utiliser les opérations mathématiques de base, vous pouvez utiliser le compilateur pour évaluer le contenu du champ InputField. 1.8 + 32 est une expression Smalltalk valide. Ce n'est pas une très bonne idée, car les erreurs sur l'analyse iraient à l'utilisateur, qui ne pouvait pas comprendre ce qui se passe. Aussi un gros problème de sécurité. –

Répondre

1

Un peu tard pour répondre, mais si vous parlez la façon d'évaluer une expression Smalltalk valide, qui se trouve être une expression mathématique:

Smalltalk compiler evaluate: '0.0 - (1.8 + 32)' 

printIt => -33,8