Return Value Atanmasa Ne Olur?

Fonksyionlarda Result Atamasak Ne Olur

 
  case BoolFunc() of
    True:
      showmessage('true');
    False:
      showmessage('false');
  else
    showmessage('else');
  end;
 

Yukarıdaki kodun nasıl bir çıktı vereceğini tahmin edebilirmisiniz?
Tabikide boolean iki tür değer taşıyabilir (True,False) ve bu fonksiyonda bu iki durumdan başka bir çıktı üretmez diye düşünebilirsiniz ama aşağıdaki gibi bir fonksiyon yazsam çıktı else olacaktır.

 
function BoolFunc:Boolean
begin
 
end;
 

Delphide yazdığımız fonksiyonlarda istersek result ataması yapmadanda kodu derleyebiliyoruz.
C#,java gibi başka programlama dilleri yukardaki kodun derlenmesine izin vermezler ama delphi de sorun olmuyor.

Delphi bu durumda sadece aşağıdaki gibi bir uyarı veriyor.
[DCC Warning] W1035 Return value of function 'BoolFunc' might be undefined.

Buradanda anlaşılıyorki derleyicinin ürettiği mesajları okumak çok önemlidir. Ve yazdığınız fonksiyonların her durumda bir değer üretmesini sağlamalıyız.

    • No Related Post
bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark
tabs-top

2 Comments »

  1. dönüş tipine neden boolean yazdık o zaman, bu bence iyi birşey değil.

    var a:Boolean;
    begin
     a := BoolFunc;
     case a of
        True:
          showmessage('true');
        False:
          showmessage('false');
      else
        showmessage(BoolToStr(a));
      end;
    end;
    

    bunu debug modda incelediğimizde a True görünüyor ama BoolToStr fonksiyonuna girince de “Access violation”. Tam bir komedi (=

    comment-bottom
  2. bir deneme daha .

    if BoolFunc then
      ShowMessage('is Bool and True')
      else
     ShowMessage('what ? ');
    

    burdaa da BoolFunc true dönderiyor. çok ilginç gerçekten.

    ataması yapılmamış bir bool değer olabilir mi?. boolean nullable bir tip mi ?. boolean bir değişkene atama yapmayınca neden true oluyor.

    ayrıca bu ornekte de a ture oluyor

    var a:boolean;
    
    if a then
    showmessage('a is true');
    
    comment-bottom

RSS feed for comments on this post. TrackBack URL

Leave a comment