Dönüş kullanıldığında anahtarda kırılmaya ihtiyacınız var mı?


110

"Return" kullanıldığında "switch" işlevinde "break" kullanmam gerekip gerekmediğini merak ediyordum.

function test($string)
{
  switch($string)
  {
    case 'test1':
      return 'Test 1: ' . $string;
    case 'test2':
      return 'Test 2: ' . $string;
  }
}

Denedim ve "ara" olmadan gayet iyi çalışıyor. Ama bunun güvenli olup olmadığını bilmem gerekiyor. Teşekkür ederim.


1
$ string = 'testx' ise ne olur;
Jagadeesan

Yanıtlar:


132

Evet, returnbunun yerine kullanabilirsiniz break...

breakisteğe bağlıdır ve diğer tüm ifadelerin " düşmesini " önlemek için kullanılır case. Dolayısıyla , işlevin yürütülmesi sona erdiğinden, returnbenzer bir şekilde kullanılabilir return.

Ayrıca, tüm caseifadeleriniz böyleyse:

case 'foo':
   $result = find_result(...);
   break;

Ve switchsahip olduğunuz ifadeden sonra, her birinde return $resultkullanmak kodunuzu çok daha okunaklı hale getirecektir.return find_result(...);case

Son olarak, defaultdavayı eklemeyi unutmayın . Kodunuzun asla defaultvakaya ulaşmayacağını düşünüyorsanız , assertişlevi kullanabilirsiniz , çünkü asla emin olamazsınız.


Teşekkürler Luzhin, ben de öyle düşündüm.
EMC


4

Hayır, gerekli değildir, çünkü anahtar kelime dönüşü çağrıldığında, anahtarın / durumun çağrıldığı belirli işlevin sona erdiğini gösterecektir.


3

Hayır, sen gerekmez breakbir de switch caseaçıklamada. breakAslında isteğe bağlıdır, ancak dikkatli kullanın.


2

İhtiyacınız yok, ancak her durumda iyi bir uygulama olarak kullanmanızı şiddetle tavsiye ederim.


6
hiçbir anlamı yoktur, çünkü return kendi başına yürütmede açıkça mevcuttur =) Daha az kod daha iyidir.
EMC

7
Daha az kod! = Daha iyi. Kod golf oynayın. Okunabilirlik ve anlaşılabilirlik pahasına tek satırda olması için aşırı optimize edilmiş kod yerine okunabilir, açık kod kullanmayı tercih ederim.
Martin Bean

3
Bunu her iki şekilde de tartışabilirsiniz. Bazı derleyiciler, bir anahtardaki dönüşten sonra çalıştırılamayan kod hakkında uyarır, bazıları ise yapmaz. Bu kişisel bir tercihtir ve en azından benim için bir anahtardan düşerek kaç kez ısırıldığıma göre renklenir, kırılmayı görmek isterim.
Harry

2

Break, anahtar yapısının kontrolünün başka bir duruma geçmesini sınırlamak için kullanılan sadece bir uyarı ifadesidir ... örneğin, üç durum ifadeniz varsa ve değer ilk durum için ise ve herhangi bir kırılma yapısı olmayan bir vaka kullandıysanız, aşağıdaki durumların tümü yalnızca ilk durum için karşılanan koşuldan bağımsız olarak yürütülecektir ... Return, asme işlevini gerçekleştirebilir, böylece break yerine return kullanırsanız sorun olmaz çünkü return, switch case deyiminden kontrolü alır. İşte o anda ihtiyaç duyulan şey ...... umarım yardımcı olur ....


1

return , kontrolü çağırma yöntemine geri verir; burada break , anahtar bloğundan sonraki ilk talimata atlar.

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.