Sympa, le truc qui me manque en php ce sont les typages fixes. ( et fort aussi mais là autant changer de langage )
Voici comment je traduirais ton truc en php ( que 5.3 , en 5.2 ça marche pas et je regrette fort ! )
Voici comment je traduirais ton truc en php ( que 5.3 , en 5.2 ça marche pas et je regrette fort ! )
Code PHP :
<?php
function sumArray( $ar , $cond ) {
$sum = 0;
foreach( $ar as $val )
if( $cond( $val ) )
$sum += (int) $val;
return $sum;
}
$t = array( 1,2,3,4,5,6,7,8,9,10 );
// bon c'est moins sexy c'est sûr :
echo 'En utilisant une lambda: ' , '<br/>', PHP_EOL;
echo 'Somme: ', sumArray( $t, function ($v){ return !($v % 2);} ) , '<br/>', PHP_EOL; // on envoie un fonction lambda
// Sinon avec une closure :
$divisible = function ( $dividende ) {
return function ( $v ) use ( $dividende ) { // on renvoie une closure
return !($v % $dividende);
};
};
echo 'En utilisant les closures: ' , '<br/>', PHP_EOL;
$t = array( 1,2,3,4,5,6,7,8,9,10 );
echo 'Somme: ', sumArray( $t, $divisible(2) ) , '<br/>', PHP_EOL;
echo 'Somme: ', sumArray( $t, $divisible(3) ) , '<br/>', PHP_EOL;
echo 'Somme: ', sumArray( $t, $divisible(4) ) , '<br/>', PHP_EOL;
echo 'Somme: ', sumArray( $t, $divisible(5) ) , '<br/>', PHP_EOL;
echo 'Somme: ', sumArray( $t, $divisible(6) ) , '<br/>', PHP_EOL;
echo 'Somme: ', sumArray( $t, $divisible(7) ) , '<br/>', PHP_EOL;
par contre les
Code :
var sum : Int = 0
ils auraient pas pu faire un bon vieux
Code :
Int sum = 0
________________________________
tu peux détailler ça :
Code :
def sumArray(ar : Array[Int])(condition : (Int, Int) => Int) = {
(0 /: ar) { condition }
}
et ça ?
Code :
def sumArray(ar : Array[Int]) : Int = {
ar.foldLeft(0) { _ + _ }
}