cui-unige / outils-formels-modelisation

Cours de Bachelor : Outils Formels de Modélisation
20 stars 44 forks source link

Problème de Build #6

Closed FlorianIannalfo closed 7 years ago

FlorianIannalfo commented 7 years ago

Bonjour monsieur, J'ai essayé de build le fichier main.swift dans Sources/TaskManager après avoir écris mon code mais cela me donne une erreur à chaques fois : Compile Swift Module 'TaskManager' (1 sources) /home/florian/Desktop/outils-formels-modelisation-master/tp-01/TaskManager/Sources/TaskManager/main.swift:6:10: error: use of unresolved identifier 'create' let m1 = create.fire(from: [taskPool: 1, processPool: 1, inProgress: 1]) ^~ /home/florian/Desktop/outils-formels-modelisation-master/tp-01/TaskManager/Sources/TaskManager/main.swift:6:29: error: use of unresolved identifier 'taskPool' let m1 = create.fire(from: [taskPool: 1, processPool: 1, inProgress: 1]) ^~~~ /home/florian/Desktop/outils-formels-modelisation-master/tp-01/TaskManager/Sources/TaskManager/main.swift:6:42: error: use of unresolved identifier 'processPool' let m1 = create.fire(from: [taskPool: 1, processPool: 1, inProgress: 1]) ^~~ /home/florian/Desktop/outils-formels-modelisation-master/tp-01/TaskManager/Sources/TaskManager/main.swift:6:58: error: use of unresolved identifier 'inProgress' let m1 = create.fire(from: [taskPool: 1, processPool: 1, inProgress: 1]) ^~~~~~ /home/florian/Desktop/outils-formels-modelisation-master/tp-01/TaskManager/Sources/TaskManager/main.swift:7:6: error: use of unresolved identifier 'create' m1 = create.fire(from: m1!) ^~ error: terminated(1): /home/florian/Downloads/swift-4.0-RELEASE-ubuntu16.10/usr/bin/swift-build-tool -f /home/florian/Desktop/outils-formels-modelisation-master/tp-01/TaskManager/.build/debug.yaml main

Merci d'avance, PS: Je suis passé à votre bureau mais vous n'étiez pas la.

CelineRenaud commented 7 years ago

Hello,

Visiblement tu as le même problème que j'ai eu... #5 Il faut redéfinir toutes les paramètre et les fonctions comme dans les tests de taskManagerTest.

Bonne chance pour la suite

kyouko-taiga commented 7 years ago

Exact! Bien vu.

kyouko-taiga commented 7 years ago

Dans les fichiers de tests, vous pouvez voir comment je récupère les places et transitions créées avec le réseau:

https://github.com/cui-unige/outils-formels-modelisation/blob/master/tp-01/TaskManager/Tests/TaskManagerLibTests/TaskManagerLibTests.swift#L17

lutzilutz commented 7 years ago

J'ai le même problème mais je ne vois pas comment le régler. Qu'entendez-vous par redéfinir tous les paramètres et les fonctions ?

CelineRenaud commented 7 years ago

si tu vas sur le lien donné plus haut, tu remarque que les état et fonctions sont redéclarer dans le fichier test : https://github.com/cui-unige/outils-formels-modelisation/blob/master/tp-01/TaskManager/Tests/TaskManagerLibTests/TaskManagerLibTests.swift#L17

tu peux t'en inspirer en prenant l'objet taskmanager déclaré plus haut dans main.

ghost commented 7 years ago

J'ai beau lire et relire le code et vos commentaires, je n'arrive pas à résoudre le même problème mentionné par l'ouverture de cette issue. Si quelqu'un peut éclairer ma lanterne...

kyouko-taiga commented 7 years ago

L'erreur laissée par Swift est la suivante:

.../main.swift:6:10: error: use of unresolved identifier 'create'
let m1 = create.fire(from: [taskPool: 1, processPool: 1, inProgress: 1])
^~~~~~

Ceci veut dire que la variable create n'existe pas. Il faut effectivement qu'elle soit déclarée avant de pouvoir être utilisée. En outre, on veut également que cette variable soit assignée à la transition correspondante.

La fonction createTaskManager() retourne une instance de PTNet, laquelle regroupe toutes les informations voulues (places et transitions). Il s'agit donc d'extraire l'object correspondant à la transition create de l'instance retournée par createTaskManager():

let net    = createTaskManager()
let create = net.transitions.first { $0.name == "create" }!

PTNet.transitions est un ensemble de transitions (Set<PTTransition>). Le code ci-dessus récupère la première transition de cet ensemble dont le nom est "create", grâce à la méthode Set.first(where:). Comme cette méthode retourne un type optionnel (au cas où l'objet recherché n'aurait pu être trouvé), il faut encore l'unwrap, ce que je force avec !.

ghost commented 7 years ago

Merci pour les rapides précisions malgré l'heure tardive !