Ver Mensaje Individual
  #22  
Antiguo 01-12-2016
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por roman Ver Mensaje
En lo particular, esa característica (que la asignación sea un operador) casi sólo la uso para ciclos en los que obtengo y uso un dato:
Código:
/*
  DameRegistro devuelve el siguiente registro o FALSE si no hay más registros
*/
WHILE registro = DameOtro() DO
BEGIN
  MuestraRegistro(registro)
END
Buen uso.

Hoy estuve trabajando con cierto método que quizá sirva de ejemplo:
Código Delphi [-]
  Function TuaByNodeIdDic <T>.TryGetValue (Const AKey :TuaDNodeId;
    Out AValue :T) :Boolean;
  Var
    LTried :Boolean;
  Begin
    LTried := System.False;
    Result := System.False;

    If AKey.IndexableByID Then
    Begin
      Result := TryGetValue (AKey.BinEncodedID, AValue);  // Sobrecarga (no recursivo)
      LTried := System.True;
    End;

    //...
  End;
Con "asignaciones expresivas" (por llamarles de algún modo) esa primera parte se reduciría un poco:
Código Delphi [-]
  Function TuaByNodeIdDic <T>.TryGetValue (Const AKey :TuaDNodeId;
    Out AValue :T) :Boolean;
  Var
    LTried :Boolean;
  Begin
    If Result := LTried := AKey.IndexableByID Then
      Result := TryGetValue (AKey.BinEncodedID, AValue);  // Sobrecarga (no recursivo)

    //...
  End;

Saludos.
Responder Con Cita