C ++ 'da geçersiz işlevden nasıl çıkıyorsunuz?


158

Geçersiz bir işlevse, değer döndürmeden bir işlevden nasıl erken çıkabilirsiniz? Belirli bir koşul doğruysa kodunu yürütmek için gereken bir geçersiz yöntem var. Gerçekten bir değer döndürmek için yöntemi değiştirmek zorunda istemiyorum.


9
Bu gerçekten basit bir soru olmasına rağmen, ilk C programımı yazarken aynı sorunu yaşadığım için iptal ettim :)
rmeador

11
@itsbunnies: Başka bir yerde de belirtildiği gibi, SO'da sorulacak çok basit programlama soruları yoktur. Eğer onunla sorun yaşadıysan, geçmişte başka biri de olur, gelecekte de başka biri olur.
Kertenkele Bill

@BilltheLizard: Ne ilk program hakkında hiç böyle bir sorun vardı? Geçmişinde kim bu problemi yaşadı ? ;-)
flarn2006

1
sadece bu soruyu kendim vardı :)
moldovean

Her zaman altta dönmek için bir işlevi her zaman yeniden yazabileceğinizi unutmayın; bu, yapılandırılmış bir programlama ilkesidir (bir giriş noktası, bir çıkış noktası),
Malcolm McLean

Yanıtlar:


195

Bir iade ifadesi kullanın!

return;

veya

if (condition) return;

Yönteminiz geri dönüyorsa, herhangi bir değer belirtmeniz gerekmez (ve yapamazsınız) void.


2
Daha da önemlisi: yönteminiz geçersiz döndürürse herhangi bir dönüş değeri belirtmemelisiniz.
Jonathan Leffler

Aha, yani dönüş yazdığımızda; hiçbir şey geri dönmemek kendini geçersiz kılmak anlamına gelir ha? void zaten hiçbir şey ifade etmiyor !! Hmm şimdi anladım.
quantum231

@ quantum321 Bence dönüş değeri teknik olarak tanımsız, geçersiz değil ama "geçersiz" olarak düşünmek yararlıdır.
Dr. Kişi Kişi II

@ Dr.PersonPersonII tarafından 'yönteminiz "void" döndürürse, yöntem olarak bildirilen yöntemin tamamen sözdizimsel görünümünü kastediyordum void. Teknik olarak, yöntem hiçbir şey döndürmez. undefined döndürmekten farklı.
Mehrdad Afshari

2
Aslında yazabilirsiniz return void():)
Orbit'te Hafiflik Yarışları

12

Böyle mi demek istiyorsun?

void foo ( int i ) {
    if ( i < 0 ) return; // do nothing
    // do something
}

10
void foo() {
  /* do some stuff */
  if (!condition) {
    return;
  }
}

Dönüş anahtar kelimesini, tıpkı diğer işlevlerde yaptığınız gibi kullanabilirsiniz.


-1

Sorunun zaten cevaplandığını ve bir returnifade kullanarak işi yaptığını biliyorum . Ancak alternatif olarak, işlevin geri kalanınıelseif durum bloğuna .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.