çağrılabilir nesne - Callable object
Bir çağrılabilir nesne , içinde bilgisayar programlama , bir benzeri çağrılabilir herhangi nesnedir fonksiyonu .
farklı dillerde
C++'da
- işlev işaretçisi ;
- üye işlevine işaretçi ;
- işlev ;
- lambda ifadesi .
-
std::function
imzasıyla eşleşen herhangi bir çağrılabilir nesneyi tutabilen bir şablon sınıfıdır .
C++'da, işlev çağrısı operatörünü aşırı yükleyen herhangi bir sınıf , işlev operator()
çağrısı sözdizimi kullanılarak çağrılabilir.
#include <iostream>
struct Foo
{
void operator()() const
{
std::cout << "Called.";
}
};
int main()
{
Foo foo_instance;
foo_instance(); // This will output "Called." to the screen.
}
C#'da
PHP'de
PHP 5.3+, örneğin işleve parametre olarak kullanılabilecek birinci sınıf işlevlere sahiptir usort()
:
$a = array(3, 1, 4);
usort($a, function ($x, $y) { return $x - $y; });
PHP 5.3+ sürümünde __invoke()
, sınıflarına sihirli bir yöntem ekleyerek nesneleri çağrılabilir hale getirmek de mümkündür :
class Minus
{
public function __invoke($x, $y) { return $x - $y; }
}
$a = array(3, 1, 4);
usort($a, new Minus());
Python'da
Gelen Python bir herhangi bir nesne __call__()
yöntemi fonksiyon çağrısı sözdizimi kullanılarak çağrılabilir.
class Foo:
def __call__(self):
print("Called.")
foo_instance = Foo()
foo_instance() # This will output "Called." to the screen.
Başka bir örnek:
class Accumulator:
def __init__(self, n):
self.n = n
def __call__(self, x):
self.n += x
return self.n
Dart'ta
Dart sınıfınızın bir işlev gibi çağrılmasına izin vermek için call()
yöntemi uygulayın.
class WannabeFunction {
call(String a, String b, String c) => '$a $b $c!';
}
main() {
var wf = new WannabeFunction();
var out = wf("Hi","there,","gang");
print('$out');
}
Referanslar
Dış bağlantılar