Δημοσιεύτηκε: 03 Δεκ 2011, 15:57
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;
}