Foksiyona argüman olarak fonksiyon verme?

Endorfin35+

Kayıtsız Üye
Katılım
1 Mayıs 2020
Mesajlar
4,204
Esp32 nin asyncwebserver kütüphanesini kullanmaya başladım. Kütüphanenin fonksiyonlarını çağırırken fonksiyonlara argüman olarak sınırsız (gibi) fonksiyon ekleyebiliyorum. Böyle birşeyi ilk defa gördüm. Fonksiyonun aldığı iki üç parametre ve yine iki üç overloading var ama argüman olarak istediğim gibi fonksiyon ekliyorum. Bu nasıl oluyor.
 
Örneğin yazdığım koddan bir parça ekliyorum. Alt bölümde ise on fonksiyonu yer almakta.

C++:
server.on
  (
    "/login", HTTP_POST, [] (AsyncWebServerRequest *request)
    {
      Serial.println("Oturum Açma İsteği...");
    
      String Get_User;
      String Get_Pass;

      AsyncWebParameter* u = request->getParam(0); // birinci parametre
      AsyncWebParameter* p = request->getParam(1); // ikinci parametre 
      
      Get_User = u->value();
      Get_Pass = p->value();
 
      if (UI_USER == Get_User and  UI_PASS == Get_Pass) 
      {
        request->send(SPIFFS, "/index.html", String());
      } else {
        request->send(SPIFFS, "/login.html", String());
      }

    }
  );

C++:
AsyncCallbackWebHandler& AsyncWebServer::on(const char* uri, WebRequestMethodComposite method, ArRequestHandlerFunction onRequest, ArUploadHandlerFunction onUpload){
  AsyncCallbackWebHandler* handler = new AsyncCallbackWebHandler();
  handler->setUri(uri);
  handler->setMethod(method);
  handler->onRequest(onRequest);
  handler->onUpload(onUpload);
  addHandler(handler);
  return *handler;
}

AsyncCallbackWebHandler& AsyncWebServer::on(const char* uri, WebRequestMethodComposite method, ArRequestHandlerFunction onRequest){
  AsyncCallbackWebHandler* handler = new AsyncCallbackWebHandler();
  handler->setUri(uri);
  handler->setMethod(method);
  handler->onRequest(onRequest);
  addHandler(handler);
  return *handler;
}

AsyncCallbackWebHandler& AsyncWebServer::on(const char* uri, ArRequestHandlerFunction onRequest){
  AsyncCallbackWebHandler* handler = new AsyncCallbackWebHandler();
  handler->setUri(uri);
  handler->onRequest(onRequest);
  addHandler(handler);
  return *handler;
}
 
Burada "lambda function" diye bir özellik kullanılıyor. Yani javascript'teki fonksiyon içinde fonksiyon tanımlamak gibi birşey. Yeni C/C++ standartlarında eklenmiş bir özellik. Ben şimdiye kadar hiç kullanmadım, ayrıntılarını bilmiyorum.
 
Bir yerde daha karşıma çıkmıştı bu lambda. O zaman hiç anlamamıştım. Buradaki kullanım en azından bir işe yarıyor. Anlmaya anlamaya sonunda anlayacaz sanırım...
 

Forum istatistikleri

Konular
5,880
Mesajlar
100,271
Üyeler
2,491
Son üye
djkop

Son kaynaklar

Son profil mesajları

gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Back
Top