Işlevlerin içinde işlevlerini yaratma kullanımı nedir?

3 Cevap php

Ben başka bir işlev içinde bir işlev oluşturmak mümkün olduğunu biliyoruz. Neden bir gerçek hayatta bunu yapmak gerekebilir? (PHP)

function someFunction($var)  
{  
    function anotherFunction()
    {
        return M_PI;
    }

    return anotherFunction();
}

3 Cevap

Dış fonksiyon denir kadar şey mevcut bu iç işlevi istemiyordu eğer hiç gerçekten başka bir işlev içinde bir işlev tanımlamak istediğimiz tek zamandır.

function load_my_library() {
  ...

  function unload_my_library() {
  }
}

Kütüphane yüklendikten sonra gerek (ya da istiyorum) unload_my_library kullanılabilir olmasını istiyorum sadece zaman.

İç içe fonksiyonları genellikle hiç kullanılmamalıdır. Sınıflar ve kamu / özel yöntemleri çok daha temiz sorunların aynı tür çözmek.

Ancak, işlev üretme fonksiyonları yararlı olabilir:

<?php
# requires php 5.3+
function make_adder($a)
{
  return function($b) use($a) {
    return $a + $b;
  };
}

$plus_one = make_adder(1);
$plus_fortytwo = make_adder(42);

echo $plus_one(3)."\n";       // 4
echo $plus_fortytwo(10)."\n"; // 52

?>

Bu örnek yapmacık ve saçma olduğunu, ancak bu tür bir şey sıralama rutinleri, vb tarafından kullanılan işlevleri oluşturmak için yararlı olabilir

Ben burada tahmin ediyorum, ama yürütme için başka bir işlev işlevini iletme için kullanılan inanıyoruz. Örneğin, arama düzeni karşılaştırma yapmak için bir geri çağırma işlevini belirtmek bir arama fonksiyonu çağrılıyor. Bu sizin dış işlevi karşılaştıncının saklanması sağlayacaktır.