Ruby: Kein Block Fehler gegeben

8

Ich bekomme immer einen Fehler "kein Block gegeben", wenn ich versuche, die Zeichenfolge an die is_tut zu übergeben? Methode. Ich bin neu in Ruby und habe keine Ahnung, was ich falsch mache. Jede und jede Hilfe würde geschätzt werden.

%Vor%     
James Titus 03.04.2011, 00:19
quelle

3 Antworten

15

Wenn Sie yield innerhalb Ihrer Methodendefinition haben, bedeutet das, dass Sie obligatorisch einen Block übergeben müssen, wenn Sie ihn verwenden (es sei denn, der Teil, der ihn enthält, wird nicht entsprechend der Konditionierung usw. ausgeführt). (Sie wissen vielleicht schon, aber falls nicht: ein Block ist etwas, das als {...} oder do ... end beschrieben wird) Und yield bezieht sich auf den Block.

Wenn Sie einen Block optional machen wollen, können Sie das & -Symbol vor den Variablennamen setzen.

%Vor%

Dies ermöglicht optionale Blockierung. Oder, wie von Squeegy vorgeschlagen,

%Vor%

funktioniert auch.

    
sawa 03.04.2011 00:27
quelle
1

Da Sie yield in Ihrer Methode to_tut() aufrufen, schlägt diese Zeile fehl:

%Vor%

Sie müssen entweder brauchen um einen Block zu geben (wie Sie es im ersten auskommentierten Aufruf von Tut.to_tut() gemacht haben), oder müssen Sie Ihre to_tut() ändern Funktion zu machen den Code-Block optional :

%Vor%     
sarnold 03.04.2011 00:31
quelle
0

yield erfordert, dass ein Block an to_tut übergeben wird.

Wenn Sie das tun:

%Vor%

Es funktioniert, weil es den Block { |c| print c } hat.

Ohne einen Block wird der Fehler ausgelöst.

    
Sony Santos 03.04.2011 00:30
quelle

Tags und Links