Toto maVariable = new Toto()
public class Toto
{
public string name;
Toto()
{
name= new String(/* le nom de l'instance de la variable -> maVariable*/)
}
}
Comment est-il possible de recuperer le nom de la variable de
l'instance en cours ?
Ensuite autre probleme
void creerInstance(String nomDeLaVariable)
{
Object /* nomDeLaVariable */ = new Object();
....
}
Est il possible d'instancier une variable en lui donnant comme nom une
chaine de caractères passée en paramètre ?
Toto maVariable = new Toto()
public class Toto
{
public string name;
Toto()
{
name= new String(/* le nom de l'instance de la variable -> maVariable*/)
}
}
Comment est-il possible de recuperer le nom de la variable de
l'instance en cours ?
Ensuite autre probleme
void creerInstance(String nomDeLaVariable)
{
Object /* nomDeLaVariable */ = new Object();
....
}
Est il possible d'instancier une variable en lui donnant comme nom une
chaine de caractères passée en paramètre ?
Toto maVariable = new Toto()
public class Toto
{
public string name;
Toto()
{
name= new String(/* le nom de l'instance de la variable -> maVariable*/)
}
}
Comment est-il possible de recuperer le nom de la variable de
l'instance en cours ?
Ensuite autre probleme
void creerInstance(String nomDeLaVariable)
{
Object /* nomDeLaVariable */ = new Object();
....
}
Est il possible d'instancier une variable en lui donnant comme nom une
chaine de caractères passée en paramètre ?
Finallement que veux-tu faire avec tes noms de variables ? Il y a
peut-être un autre moyen ?
En fait j'interface du Prolog avec mon programme JAVA via JPL. Or les
Finallement que veux-tu faire avec tes noms de variables ? Il y a
peut-être un autre moyen ?
En fait j'interface du Prolog avec mon programme JAVA via JPL. Or les
Finallement que veux-tu faire avec tes noms de variables ? Il y a
peut-être un autre moyen ?
En fait j'interface du Prolog avec mon programme JAVA via JPL. Or les
en java :
Variable A = new Variable(); // ici Variable = Variable prolog
jpl.query("p",A);
Est ce vraiment impossible de faire ça ?
en java :
Variable A = new Variable(); // ici Variable = Variable prolog
jpl.query("p",A);
Est ce vraiment impossible de faire ça ?
en java :
Variable A = new Variable(); // ici Variable = Variable prolog
jpl.query("p",A);
Est ce vraiment impossible de faire ça ?
Je suis sur que le bytecode généré à la compilation ne contient plus
le nom 'A' utilisé dans le source. Donc JPL n'utilise que les objets
'Variable' de façon anonyme, en s'assurant que le même objet utilisé
dans deux arguments différents d'un prédicat est la même variable.
Pour preuve, essaie de compiler et tester:
jpl.query("p", new Variable());
Cela doit fonctionner même si ta variable n'a pas de nom !
Je suis sur que le bytecode généré à la compilation ne contient plus
le nom 'A' utilisé dans le source. Donc JPL n'utilise que les objets
'Variable' de façon anonyme, en s'assurant que le même objet utilisé
dans deux arguments différents d'un prédicat est la même variable.
Pour preuve, essaie de compiler et tester:
jpl.query("p", new Variable());
Cela doit fonctionner même si ta variable n'a pas de nom !
Je suis sur que le bytecode généré à la compilation ne contient plus
le nom 'A' utilisé dans le source. Donc JPL n'utilise que les objets
'Variable' de façon anonyme, en s'assurant que le même objet utilisé
dans deux arguments différents d'un prédicat est la même variable.
Pour preuve, essaie de compiler et tester:
jpl.query("p", new Variable());
Cela doit fonctionner même si ta variable n'a pas de nom !
Oui, le fait d'instancier une variable prolog en JAVA en faisant new
Variable(), la JVM crée en fait son propre identifiant de variable
C'est la où est le problème ! Car lorsqu'il retourne
les résultats c'est une hashtable entre cette clé (la variable) et la
valeur d'unification. Le truc qui fait que c'est utilisable, c'est
qu'on retrouve la clé en faisant un get avec la variable A comme
clé. Mais si je parcours simplement ma hashtable les valeurs de clé ne
sont plus significatives. Et donc impossible de faire une fonction
générique qui affiche les résultats quelque soit la requête !
Pour preuve, essaie de compiler et tester:
jpl.query("p", new Variable());
Cela doit fonctionner même si ta variable n'a pas de nom !
Ca marche ... mais si on passe un prédicat à 2 variables, impossible
de savoir quelle est la valeur de l'une ou de l'autre variable.
Au pire j'ai une solution (pas trés jolie), j'etends la classe
Variable() à MyVariable() tel que:
MyVariable A = new MyVariable("A");
Ensuite je peut faire A.getName();
Mais bon pourquoi faire simple quand on peut faire compliqué ... ;-)
Le but et que j'aurais aimé simplifié en évitant de passer la chaine
de caractère au constructeur ... mais si c'est impossible .. tans pis !
Oui, le fait d'instancier une variable prolog en JAVA en faisant new
Variable(), la JVM crée en fait son propre identifiant de variable
jpl@truc-machin. C'est la où est le problème ! Car lorsqu'il retourne
les résultats c'est une hashtable entre cette clé (la variable) et la
valeur d'unification. Le truc qui fait que c'est utilisable, c'est
qu'on retrouve la clé en faisant un get avec la variable A comme
clé. Mais si je parcours simplement ma hashtable les valeurs de clé ne
sont plus significatives. Et donc impossible de faire une fonction
générique qui affiche les résultats quelque soit la requête !
Pour preuve, essaie de compiler et tester:
jpl.query("p", new Variable());
Cela doit fonctionner même si ta variable n'a pas de nom !
Ca marche ... mais si on passe un prédicat à 2 variables, impossible
de savoir quelle est la valeur de l'une ou de l'autre variable.
Au pire j'ai une solution (pas trés jolie), j'etends la classe
Variable() à MyVariable() tel que:
MyVariable A = new MyVariable("A");
Ensuite je peut faire A.getName();
Mais bon pourquoi faire simple quand on peut faire compliqué ... ;-)
Le but et que j'aurais aimé simplifié en évitant de passer la chaine
de caractère au constructeur ... mais si c'est impossible .. tans pis !
Oui, le fait d'instancier une variable prolog en JAVA en faisant new
Variable(), la JVM crée en fait son propre identifiant de variable
C'est la où est le problème ! Car lorsqu'il retourne
les résultats c'est une hashtable entre cette clé (la variable) et la
valeur d'unification. Le truc qui fait que c'est utilisable, c'est
qu'on retrouve la clé en faisant un get avec la variable A comme
clé. Mais si je parcours simplement ma hashtable les valeurs de clé ne
sont plus significatives. Et donc impossible de faire une fonction
générique qui affiche les résultats quelque soit la requête !
Pour preuve, essaie de compiler et tester:
jpl.query("p", new Variable());
Cela doit fonctionner même si ta variable n'a pas de nom !
Ca marche ... mais si on passe un prédicat à 2 variables, impossible
de savoir quelle est la valeur de l'une ou de l'autre variable.
Au pire j'ai une solution (pas trés jolie), j'etends la classe
Variable() à MyVariable() tel que:
MyVariable A = new MyVariable("A");
Ensuite je peut faire A.getName();
Mais bon pourquoi faire simple quand on peut faire compliqué ... ;-)
Le but et que j'aurais aimé simplifié en évitant de passer la chaine
de caractère au constructeur ... mais si c'est impossible .. tans pis !