Δημοσιεύτηκε: 03 Δεκ 2011, 15:57
από migf1
Dimitris έγραψε:
...
Αυτό που μόλις υλοποιήσαμε είναι ένα closure. H μεταβλητή $message, αν θα μπορούσα να την περιγράψω σε C έννοιες, είναι μια static μεταβλητή της συνάρτησης print_hello, η οποία όμως print_hello δημιουργήθηκε δυναμικά. (κάτι τέτοιο δεν είναι δυνατό στη C)

Τώρα με αυτή τη γνώση προσπάθησε να δημιουργήσεις μια συνάρτηση (βλ. άσκηση 1) η οποία θα έχει το εξής αποτέλεσμα:

έγραψε:
$bla = foo(1);

$bla->(1); # επιστρέφει 2, δηλαδή 1+1
$bla->(1); # επιστρέφει 3, δηλαδή (1+1)+1

$bla = foo(1);

$bla->(2); # επιστρέφει 3, δηλαδή 1+2
$bla->(3); # επιστρέφει 6, δηλαδή (1+2)+3


Δεν είναι φανταστικές οι δυνατότητες τις perl;


Κώδικας: Επιλογή όλων

#include <stdio.h>
/* ------------------------ */
int ifoo( int i )
{
return i+1;

}
/* ------------------------ */
int nfoo( int n )
{
return ifoo(n);
}
/* ------------------------ */
int main( void )
{
int n = 2;
int (*bla)(int) = &nfoo;

printf("bla(%d) = %d\n", n, bla(n) );

return 0;
}