Précédent   Forum des professionnels en informatique > Autres langages > Autres langages > Smalltalk
Smalltalk Forum d'entraide sur la programmation en Smalltalk
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/11/2011, 17h19   #1
Invité régulier
 
Inscription : septembre 2009
Messages : 56
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 56
Points : 7
Points : 7
Par défaut [Visual Works] Erreur "message not understood do:" sur minimumDistanceToAggregate

Bon j'ai encore un petit message d'erreur dans mon code...et j'avoue je sature.

Si quelqu'un aurait la gentillesse d'y jeter un oeil

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
affectBassin
	| dist selectRule d |
	
self managedBasins do: 	[: vb | dist:= 1000000000000.

	self rules do: [: r |
		d:= ((r observable at: 1) minimumDistanceToAggregate: vb).
		d < dist
		ifTrue:
				[dist:= d.
				selectRule := r]].

	selectRule spatialScope addAll: vb components.
	vb myUsers do: [:u | u knownRules add: selectRule]].
VW me souligne minimum DistanceToAggregate et me note "message not understood do:"

Ce que je cherche à faire c'est de trouver la distance minimum entre un bassin : vb et r. Le but est qu'un bassin à une régle et que le bassin le plus proche de lui applique sa propre regle...
Bref il doit y avoir un probleme autour de minimumDistance...je pense ?
youchlure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 21h58   #2
Membre éclairé
 
Avatar de maske
 
Homme
Ingénieur développement logiciels
Inscription : mai 2008
Messages : 204
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mai 2008
Messages : 204
Points : 398
Points : 398
Salut,

self rules ça renvoit quoi ?

Mêmes questions pour self managedBasins , vb myUsers et minimumDistanceToAggregate:.

Tu peux montrer le code de ces méthodes et ce qu'elles renvoient ?

A tous les coups t'en a une qui ne retourne pas un objet qui comprend ce message (ou bien tu as un do: dans minimumDistanceToAggregate: qui est envoyé à un objet qui ne comprend pas ce message).
__________________
[|]
maske est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 15h10   #3
Invité régulier
 
Inscription : septembre 2009
Messages : 56
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 56
Points : 7
Points : 7
Salut,
oui désolé je vais vous mettre tous les codes correspondants :

Self rules et sel managedbassin sont des attributs de la classe "pm" et c'est dans "pm" que l'on trouve "affect bassin".

Leur init est :
Code :
1
2
self managedBasins: OrderedCollection new.
self rules: OrderedCollection new.
myUsers : est un attribut de riverBassin
self myUsers: OrderedCollection new.

et vb correspond à

Code :
self validationBasins do: [:vb |vb components do: [:c | vb myUsers addAll: (c theOccupants at: #User)]].
et myDistanceToaggregate :

Code :
1
2
3
4
5
6
7
8
9
10
minimumDistanceToAggregate: aSpatialEntityAggregate 
	"returns the minimum distance in cells, between the sender and aSpatialEntityAggregate"

	| dist b |
	dist := 100000000000000000.
	aSpatialEntityAggregate surround do: 
			[:aComponent | 
			b := aComponent distCell: self.
			b < dist ifTrue: [dist := b]].
	^dist
Si il manque quelque chose dites le moi?
youchlure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 17h24   #4
Membre éclairé
 
Avatar de maske
 
Homme
Ingénieur développement logiciels
Inscription : mai 2008
Messages : 204
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : mai 2008
Messages : 204
Points : 398
Points : 398
Dans ce code là, j'aurais besoin de savoir ce que renvoi aSpatialEntityAggregate surround.

S'il y a des appels de méthodes dedans, ce que ça renvoit aussi.

Code :
1
2
3
4
5
6
7
8
9
10
minimumDistanceToAggregate: aSpatialEntityAggregate 
	"returns the minimum distance in cells, between the sender and aSpatialEntityAggregate"

	| dist b |
	dist := 100000000000000000.
	aSpatialEntityAggregate surround do: 
			[:aComponent | 
			b := aComponent distCell: self.
			b < dist ifTrue: [dist := b]].
	^dist
Pour moi l'erreur se situe dans aSpatialEntityAggregate surround qui ne doit pas renvoyer un objet répondant à do:.

Est-ce que tu as essayé de suivre le cheminement de ton erreur dans le debuggeur ?
__________________
[|]
maske est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 18h28   #5
Invité régulier
 
Inscription : septembre 2009
Messages : 56
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 56
Points : 7
Points : 7
Effectivement l'erreur est celle ci : il me souligne ce bloc!

do:
[: aComponent |
b := aComponent distCell: self.
b < dist ifTrue: [dist := b]]

Il faut que je trouv epourquoi maintenant!

Merci de ton aide!!!

Bon weekend
youchlure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 11h48   #6
Invité régulier
 
Inscription : septembre 2009
Messages : 56
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 56
Points : 7
Points : 7
Bon aprés réflexion cela doit provenir d'un défaut d'initialisation de VW pour la fonction "surround"
youchlure est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h19.


 
 
 
 
Partenaires

Hébergement Web