Pilfunktioner: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
(Skapade sidan med '== Pilfunktioner (Arrow Functions) == Pilfunktioner introducerades i PHP 7.4 som en mer koncis syntax för anonyma funktioner. Både anonyma funktioner och pilfunktioner implementeras med hjälp av klassen Closure. Pilfunktioner har den grundläggande formen `fn (argument_list) => expr`. Pilfunktioner stöder samma funktioner som anonyma funktioner, med undantaget att användning av variabler från det överordnade omfånget alltid är automatiskt. När en variabel s...')
 
 
Rad 75: Rad 75:


== Ändringslogg ==
== Ändringslogg ==
;Version
;
:Beskrivning
{| class="wikitable"
;7.4.0
|+
:Pilfunktioner blev tillgängliga.
!Version
!Beskrivning
|-
|7.4.0
|Pilfunktioner blev tillgängliga.
|}
;
;
:
;
:


== Anmärkningar ==
== Anmärkningar ==

Nuvarande version från 18 augusti 2024 kl. 18.27

Pilfunktioner (Arrow Functions)

Pilfunktioner introducerades i PHP 7.4 som en mer koncis syntax för anonyma funktioner.

Både anonyma funktioner och pilfunktioner implementeras med hjälp av klassen Closure.

Pilfunktioner har den grundläggande formen `fn (argument_list) => expr`.

Pilfunktioner stöder samma funktioner som anonyma funktioner, med undantaget att användning av variabler från det överordnade omfånget alltid är automatiskt.

När en variabel som används i uttrycket definieras i det överordnade omfånget kommer den automatiskt att fångas genom värde. I följande exempel beter sig funktionerna `$fn1` och `$fn2` på samma sätt.

Exempel #1 Pilfunktioner fångar variabler genom värde automatiskt

<?php

$y = 1;
 
$fn1 = fn($x) => $x + $y;
// motsvarande att använda $y genom värde:
$fn2 = function ($x) use ($y) {
    return $x + $y;
};

var_export($fn1(3));
?>

Ovanstående exempel kommer att ge:

4

Detta fungerar också om pilfunktionerna är nästlade:

Exempel #2 Pilfunktioner fångar variabler genom värde automatiskt, även när de är nästlade

<?php

$z = 1;
$fn = fn($x) => fn($y) => $x * $y + $z;
// Skriver ut 51
var_export($fn(5)(10));
?>

På samma sätt som anonyma funktioner tillåter pilfunktionssyntaxen godtyckliga funktionssignaturer, inklusive parameter- och returtyper, standardvärden, variadics, samt genom-referens passering och återlämning. Alla följande är giltiga exempel på pilfunktioner:

Exempel #3 Exempel på pilfunktioner

<?php

fn(array $x) => $x;
static fn(): int => $x;
fn($x = 42) => $x;
fn(&$x) => $x;
fn&($x) => $x;
fn($x, ...$rest) => $rest;

?>

Pilfunktioner använder bindning genom värde. Detta är ungefär ekvivalent med att utföra `use($x)` för varje variabel `$x` som används inuti pilfunktionen. En bindning genom värde innebär att det inte är möjligt att modifiera några värden från det yttre omfånget. Anonyma funktioner kan istället användas för bindning genom referens.

Exempel #4 Värden från det yttre omfånget kan inte modifieras av pilfunktioner

<?php

$x = 1;
$fn = fn() => $x++; // Har ingen effekt
$fn();
var_export($x);  // Skriver ut 1

?>

Ändringslogg

Version Beskrivning
7.4.0 Pilfunktioner blev tillgängliga.

Anmärkningar

Notera: Det är möjligt att använda func_num_args(), func_get_arg(), och func_get_args() inuti en pilfunktion.

Sidslut

Orginalhemsidan på Engelska :
PHP
Språkreferens
Språkreferens#Funktioner