ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Dynamische Klassenerzeugung
BeitragVerfasst: 26 Apr 2015, 14:11 
Offline
Nuby

Registriert: 26 Apr 2015, 13:20
Beiträge: 1
Ich habe ein spezifikatiionsfile 'Spec.txt' das wie folgt aussieht:



1
2
3
4
5
 title     :Test
attribute :fieldOne, String
attribute :fieldTwo, Fixnum
constraint :fieldOne, 'fieldOne != nil'
constraint :fieldTwo, 'fieldTwo >= 0'


mit diesem muss ich eine dynamische Klasse und auch dynamische attribute wie oben erzeigen.
Der Title entspricht dabei dem Class-Name und die constraints die Bedingungen welche die Attribute erfuellen muessen.
Bisher hab ich die Klasse dynamisch so erzeugt



1
2
3
4
5
6
 dynamic_name = @@TITLE
Object.const_set(dynamic_name, Class.new {
def init *args
...
end
})


bin mir aber nicht sicher ob das der richtige Weg ist bzw. wie ich nun die Attribute mit den Constraints erstellen soll!?


Zuletzt geändert von Quintus am 26 Apr 2015, 21:10, insgesamt 1-mal geändert.
Code-Tags eingefügt


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Dynamische Klassenerzeugung
BeitragVerfasst: 26 Apr 2015, 21:15 
Offline
Interpreter
Benutzeravatar

Registriert: 18 Sep 2008, 22:32
Beiträge: 1821
Wohnort: NRW → UN
Erstmal: Willkommen im Forum :-)

Zur Sache: Wofür brauchst du denn eine Klassenvariable in dem Code? Das sieht etwas seltsam aus. Dann ist „init“ nicht dasselbe wie „initialize“, was du vermutlich eher erreichen wolltest: nur letzteres wird bei Instanziierung der Klasse automatisch aufgerufen. Schließlich: Warum eingerückt? Das „Object.const_set“ darf auf derselben Ebene wie die vorangehende Zuweisung stehen.

Hinsichtlich der „constrains“ wird es allerdings etwas schwierig. Die Lösung hängt davon ab, wie komplex diese Bedingungen sein können. Wenn sie nur so einfach sind, wie du sie hier gezeigt hast, solltest du in der Lage sein, sie mit einigen Regulären Ausdrücken oder notfalls einem StringScanner parsen zu können. Wenn es komplexer Ruby-Code sein kann, wirst du um Evil eval nicht herumkommen.

Vale,
Quintus

_________________
Habe den Mut, dich deines eigenen Verstandes zu bedienen! — Immanuel Kant

Ich bin freischaffender Softwareentwickler und freue mich über jedes neue Projekt. Kontaktinformation auf meiner Website.

Mein Blog | GitHub-Profil | Auf Twitter: @qquintilianus | PGP/GPG-Schlüssel: B1FE 958E D5E8 468E AA20 8F4B F1D8 799F BCC8 BC4F


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Dynamische Klassenerzeugung
BeitragVerfasst: 26 Apr 2015, 22:25 
Offline
Interpreter

Registriert: 10 Dez 2007, 17:37
Beiträge: 1906
Das sieht für mich nach einer DSL aus. Schau dir dazu mal folgenden Post hier an.

_________________
Grüße
Jack


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Dynamische Klassenerzeugung
BeitragVerfasst: 27 Apr 2015, 10:37 
Offline
Interpreter
Benutzeravatar

Registriert: 18 Sep 2008, 22:32
Beiträge: 1821
Wohnort: NRW → UN
slowjack2k hat geschrieben:
Das sieht für mich nach einer DSL aus. Schau dir dazu mal folgenden Post hier an.


Wenn’s eine DSL ist, sollten diese „constraints“ aber besser als lambda formuliert werden, damit man nicht erst eval bemühen muss. Ansonsten hast du aber natürlich Recht.

Vale,
Quintus

_________________
Habe den Mut, dich deines eigenen Verstandes zu bedienen! — Immanuel Kant

Ich bin freischaffender Softwareentwickler und freue mich über jedes neue Projekt. Kontaktinformation auf meiner Website.

Mein Blog | GitHub-Profil | Auf Twitter: @qquintilianus | PGP/GPG-Schlüssel: B1FE 958E D5E8 468E AA20 8F4B F1D8 799F BCC8 BC4F


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
cron