AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Goto

Ein Thema von MasterTobi · begonnen am 22. Aug 2007 · letzter Beitrag vom 23. Aug 2007
Antwort Antwort
Seite 3 von 4     123 4      
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#21

Re: Goto

  Alt 22. Aug 2007, 22:16
Zitat von scrat1979:
//EDIT: @elvis - Was sind denn Iteratoren? Evtl. kenne ich nur den Begriff nicht, jetzt bin ich aber neugierig geworden und Google liefert mir nichts...
Damit kann man eine for-in Iteration sozusagen von innen aufbauen und man muss nur einzelne Werte rauswerfen, die dann ein Schleifendurchlauf im for-in werden.
Sinnbefreites Beispiel für die nichtssagende Erklärung :
Delphi-Quellcode:
type
  Sample = class
  public
    class method Test(startValue, endValue : Integer) : sequence of Integer; iterator;
  end;

implementation

class method Sample.Test(startValue, endValue : Integer) : sequence of Integer;
begin
  for i : Integer := startValue to endValue do
    yield i;
end;
Könnte man so benutzen:
Delphi-Quellcode:
for i in Sample.Test(2, 10) do
  Console.WriteLine(i);
Der wirklich Iterator (oder Enumerator in MS-speak) wird vom Compiler als eine state machine umgesetzt, die bei jedem Aufruf auf MoveNext zum nächsten yield springt.
Robert Giesecke
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#22

Re: Goto

  Alt 22. Aug 2007, 22:19
Oje, muss gestehen, daß ich so etwas noch nie benutzt habe. Danke für den anschaulichen Code. Wenn ich mal Zeit habe, werde ich mir ihn mal genauer anschauen!! Thanx.

SCRaT
Michael Kübler
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#23

Re: Goto

  Alt 22. Aug 2007, 22:27
@Markus
Vom Meister selbst: Revised Report (1972)
Das Fehlen von GOTO in späteren Wirth-Sprachen zeigt ja sehr deutlich, daß er es selbst für überflüssig hielt. Aber ob das "Meister" Tobi überzeugt?

@SCRaT
Das geht (leider nicht ganz so schön wie in Chrome) auch in neueren Delphi-Versionen: klick

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#24

Re: Goto

  Alt 22. Aug 2007, 23:06
Zitat von scrat1979:
Wie um himmels willen findet man auf die schnelle solche Cartoons zu einem x-beliebigen Thema?!?
Wer xkcd kennt, kennt für jedes Thema einen Comic. Sei es über Informatik, Mathematik oder Velociraptoren .

Hier noch die Delphi-Umsetzung von Elvis' Beispiel:
Delphi-Quellcode:
type
  TForLoopEnumerator = class // *hust* Interfaces? *hust*
    fTo, fCurrent: Integer;
  public
    constructor Create(aFrom, aTo: Integer);
    function MoveNext: Boolean;
    property Current: Integer read fCurrent;
  end;

  TForLoop = class
    fFrom, fTo: Integer;
    public
    function GetEnumerator: TForLoopEnumerator;
    property From: Integer read fFrom write fFrom;
    property &To: Integer read fTo write fTo;
  end;

{ TForLoopEnumerator }

constructor TForLoopEnumerator.Create(aFrom, aTo: Integer);
begin
  fCurrent := aFrom - Sign(aTo - aFrom); // MoveNext wird bereits vor dem ersten
  // Schleifendurchgang aufgerufen, also musse fCurrent künstlich einen Schritt
  // zurückgesetzt werden
  fTo := aTo;
end;

function TForLoopEnumerator.MoveNext: Boolean;
begin
  Result := fCurrent <> fTo;
  Inc(fCurrent, Sign(fTo - fCurrent));
end;

{ TForLoop }

function TForLoop.GetEnumerator: TForLoopEnumerator;
begin
  Result := TForLoopEnumerator.Create(From, &To);
end;

var
  i: Integer;
  loop: TForLoop;
begin
  loop := TForLoop.Create;
  loop.From := 10;
  loop.&To := -1;

  for i in loop do
    Writeln(i);

  Readln;
end.
Die marginal vergrößerte Codelänge kann angesichts der Tatsache, dass dieser Iterator in beide Richtungen funktioniert, wohl vernachlässigt werden .

Zitat von Pelvis:
Iterator (oder Enumerator in MS-speak)
Hejlsberg hat wohl nur auf einem Ohr zugehört, als die Namen jener beiden Interfaces so und nicht anders festgelegt wurden - und dann kommt RemObjects daher und führt auch noch eine dritte Bezeichnung ein .

[edit]Einmal Editieren ist dem Cache wohl zu wenig .[/edit]
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#25

Re: Goto

  Alt 22. Aug 2007, 23:12
Zitat von Khabarakh:
Hejlsberg hat wohl nur auf einem Ohr zugehört, als die Namen jener beiden Interfaces so und nicht anders festgelegt wurden - und dann kommt RemObjects daher und führt auch noch eine dritte Bezeichnung ein
sequences sind IEnumerable<T>, nur nicht so hässlich. Gab ja bereits "array of".
Robert Giesecke
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#26

Re: Goto

  Alt 22. Aug 2007, 23:56
Zitat von Elvis:
sequences sind IEnumerable<T>, nur nicht so hässlich. Gab ja bereits "array of".
Ich weiß, auch wenn RemObjects das wohl irgendwie geheimhalten will *g* . Die Einführung eines neuen Keywords mit einer dritten Bezeichnung, das überhaupt nicht mehr mit den anderen zwei zusammenhängt, finde ich trotzdem nicht sinnvoll - wenn die C#-Generics zu hässlich sind, hätten sie sich gleich stattdessen an die VB-Syntax anlehnen sollen . Du musst zugeben, es würde doch auch niemand auf die Idee kommen, für stino Methoden wie Join() oder Select() Keywords einzuführen.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#27

Re: Goto

  Alt 23. Aug 2007, 00:31
Hi,

was hat das alles noch mit goto zu tun?

Mfg
FAlter
Felix Alter
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#28

Re: Goto

  Alt 23. Aug 2007, 03:28
Zitat von mkinzler:
Wirths Pascal hatte kein goto. Wurde später aus einem mir unerklärlichen Grund
wieder eingeführt.
Doch, hatte es definitiv. Hawkeye hat da schon Recht. Das wurde weder abgeschafft noch neu eingeführt. Heutzutage wird nach Operator-Überladung usw. geschrien. Zur damaligen Zeit wurde eben GOTO gefordert. Den C-Sphagetti-Source kann man noch heute besichtigen. Lochkarten-Goto Basic-Code, der ist allerdings kaum noch zu finden. Obwohl,..VB ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#29

Re: Goto

  Alt 23. Aug 2007, 03:45
goto Hell; ????
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#30

Re: Goto

  Alt 23. Aug 2007, 03:57
Goto 3 ist doch schon viel besser. Die liegt hier vor mir auf dem Tisch. Wetten ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz