Saturday, July 26, 2008

Closure

Mungkin, saya orang yang paling membenci istilah-istilah dalam dunia programming, mungkin saya sudah berpikiran rumit terlebih dahulu tentang istilah-istilah tersebut, misal object oriented, class, scaffolding dan lain sebagainya dan salah satunya adalah closure.

Namun setelah melihat penjelasan sedikit dari bukunya Damian Conway, ternyata closure itu hanyalah sebuah subrutin yang bisa mengakses variabel leksikal (In Perl, a closure is just a subroutine that refers to one or more lexical variables declared outside the subroutine it self, itu yang Damian Conway katakan).

my $var = 'foo';
sub my_sub {
print $var, "\n";
}


Itulah closure :)

Lalu apabila kita punya sebuah naked block seperti ini

{
my $var = 'foo';
}

Tentu saja $var tidak bisa di akses di luar naked block tersebut, hanya closure yang bisa mengakses $var

{
my $var ='foo';
sub print_sub {
print $var,"\n";
}
}
print_sub();

So that's closure :)

No comments: