Bir işlev içinde işlev görür.?

5 Cevap php

Bu kod 56 olarak sonuç üretir.

function x ($y) {
    function y ($z) {
        return ($z*2);
    }

    return($y+3);
}

$y = 4;
$y = x($y)*y($y);
echo $y;

Herhangi bir fikir ne içeride oluyor? Kafam karıştı.

5 Cevap

X iadeler (değeri +3), ise Y iadeler (değer * 2)

4 değeri göz önüne alındığında, bu gelir (4+3) * (4*2) = 7 * 8 = 56.

Burada fonksiyonların yerleştirilmesi herhangi bir fark yapmaz. Fonksiyonlar demektir, kapsamı sınırlı olmadığını yapabilirsiniz güvenle 'yuva' fonksiyon tanımları, hâlâ dosyada her yerde onları aramak mümkün olurken. Temelde, deftere kod farklı değildir

function x ($y) 
{
  return($y+3);
}

function y ($z)
{
  return ($z*2);
}

Except for the fact that it's a lot less readable.

(4+3)*(4*2) == 56

Sadece ana fonksiyonu kapsamında tanımlandığı gibi PHP, gerçekten, "iç içe fonksiyonları" desteklemiyor unutmayın. Tüm fonksiyonlar global tanımlanır. docs bakın.

Bu kodu yazar ulaşmak istediğini emin değildi. Başka bir işlev içinde bir işlevi Definining iç işlev dış işlev içinde sadece görünür olduğu anlamına gelmez. () Ilk kez x çağrıldıktan sonra, y () işlevi de global kapsamda olacak.

Sorgunuz * 8 7 yapıyor

x(4) = 4+3 = 7 ve y(4) = 4*2 = 8

ne olur fonksiyonu x o creates function y çağrıldığında olduğunu, onu çalışmaz.

It is possible to define a function from inside another function. the inner function does not exist until the outer function gets executed.

echo function_exists("y") ? 'y tanımlanmaktadır\n' : 'y tanımlanmamıştır \n';
$x=x(2);
echo function_exists("y") ? 'y tanımlanmaktadır\n' : 'y tanımlanmamıştır \n';

Çıktı

y tanımlanmamıştır

y tanımlanmaktadır

Basit bir şey, idam x önce fonksiyon y arayamam