2016-12-22 3 views
0

Gibt es eine native Möglichkeit, Validierungen für ein Crystal-Objekt zu definieren? Lassen Sie uns diese Klasse betrachten:Klassenobjektvalidierungen definieren

class Person 

    def initialize(@age : Int32) 

    end 

end 

Wie könnte ich hinzufügen, eine einfache Validierung if age < 18? Ex:

Person.new(10) 
>> Error: attibute 'age' should be greater than 18 

sah ich eine 3rd-Party-Bibliothek dies zu tun, aber ich möchte Abhängigkeiten vermeiden hinzufügen.

+0

Ich denke, das ist zu weit gefasst. Was möchten Sie mit den Validierungen machen? – mgarciaisaia

+0

Es ist ein einfaches Beispiel, das mir helfen würde, fortgeschrittenere Sachen zu erreichen, aber ich möchte es einfach machen, eine Antwort nach SO-Standards zu geben. Aber ich bearbeite meine Antwort mit einem Beispiel –

Antwort

3

Es gibt keine automatisierte Möglichkeit, Runtime-Validierung zu erreichen, aber es gibt einen idiomatischen Weg:

def initialize(@age) 
    raise ArgumentError.new("age must be 18 or more") if @age < 18 
end