String ifadeyi boolean'a çevirmek

Su ornege bakacak olursak basit bir eval onlarca satira donusebiliyor. Istenilen dilin ozelliklerine gore bu kod binlerce, onbinlerce satira cikabilir. Girilen onermenin nasil bir dil cercevesinde degerlendirilecegine bagli.

eval Python dilinin kendi yorumlayicisini devreye sokarak herhangi bir Python kodunun yazilmasina olanak veriyor. Fakat guvenligi de bu seviyede; herhangi bir Python kodu calistirabiliyoruz.

Burada da tam olarak bundan bahsedilmis.

assert x <=> if not x: raise AssertError(...)

eval (veya exec de benzeri galiba) gucune sahip degil. str beklenen yere int yollamak, dokumentasyonda on kere “pozitif sayi yollayin” dedigimiz halde 0 veya negatif sayi yollanan yerdeki varsayimlari/beklentileri kontrol etmek icin kullanilan, daha gelismis dillerde sentaks hatasi olabilecek kadar basit durumlari dogrulamak icin kullanilan bir ifade.

Istedigin gibi bir uygulamanin ne oldugunu bilmiyoruz ama istedigin “bir programlama dili tarafindan yorumlanip dogrulanabilecek bir ifade yazabilmek” ise o programlama dilini kullanmaktan baska bir caren yok. Python eval gibi bir fonksiyonalite veriyor ama C#'ta bu yok; kullanicinin kodunu alip, derleyip, ayrica calistirman lazim.

Ama burada bir XY problemi goruyorum; amacin “kullaniciya bir programlama dilinde kod yazdirmak” olamaz. Eger oyleyse zaten Python’in, C#'in kendisi var, senin kodun ne katiyor?

1 Beğeni