2016-05-26 11 views
0

Wie kann ich Switch-Gehäuse mit implementieren Prolog Programmiersprache? Ich bin sehr neu in der Sprache, deshalb habe ich es nicht selbst probiert! Lassen Sie uns sagen, dass wir diesen Java-Switch-Fall in Prolog ändern wollen:Dynamic Switch Case in Prolog

int month = 8; 
     String monthString; 
     switch (month) { 
      case 1: monthString = "January"; 
        break; 
      case 2: monthString = "February"; 
        break; 
      case 3: monthString = "March"; 
        break; 
      case 4: monthString = "April"; 
        break; 
      case 5: monthString = "May"; 
        break; 
      case 6: monthString = "June"; 
        break; 
      case 7: monthString = "July"; 
        break; 
      case 8: monthString = "August"; 
        break; 
      case 9: monthString = "September"; 
        break; 
      case 10: monthString = "October"; 
        break; 
      case 11: monthString = "November"; 
        break; 
      case 12: monthString = "December"; 
        break; 
      default: monthString = "Invalid month"; 
        break; 
     } 
     System.out.println(monthString); 
    } 
} 
+0

können Sie festlegen, welche Art von "switch case" Sie nach? In welchem ​​Sinne ist es dynamisch? Generell würde ich sagen, dass Sie das in Prolog nicht machen können, aber Sie können die Programmlogik wahrscheinlich auf eine andere Weise modellieren, so dass es funktioniert. – Limmen

+0

Der dynamische Schalterfall implementiert genaugenommen eine separate Funktion für jede unterschiedliche Schalteraktion, die Sie ausführen möchten. Was es kompakt macht, ist, dass es die Funktion Indizierungsfunktion von Dynamic Link Libraries verwendet, und der Fall wird ausgeführt, indem der Case-Wert direkt in einen Funktionsindex in der DLL umgewandelt wird. Prolog verfügt über eine Funktion zum Erstellen von Prädikaten, die in einer DLL indexierbar sind. Aber die Frage lässt mich denken, dass Sie versuchen, imperative Sprachlogik auf eine relationale Sprache anzuwenden. – lurker

Antwort

0

nicht zwingend notwendig, Programmierung in Prolog anwenden. Allerdings ist der Imperativ Code:

switch(N) { 
    case 1: procedure1(); break; 
    case 2: procedure2(); break; 
    default: procedure(); break; 
    } 

kann geschrieben werden als:

switch(1) :- 
    procedure1. 
switch(2) :- 
    procedure2. 
switch(_) :- 
    procedure;