rfc:arrow_functions

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
rfc:arrow_functions [2017/01/30 17:31] levimrfc:arrow_functions [2017/01/31 17:27] – Fix link formatting levim
Line 63: Line 63:
 ==== Type Declarations ==== ==== Type Declarations ====
 This RFC does support type declarations for parameters and return types. This issue was noted multiple times on the mailing list during the short closures RFC as something that bothered voters. Therefore this RFC permits them but the authors discourage their general use in arrow functions. This RFC does support type declarations for parameters and return types. This issue was noted multiple times on the mailing list during the short closures RFC as something that bothered voters. Therefore this RFC permits them but the authors discourage their general use in arrow functions.
 +
 +==== References ====
 +Parameters and return values can be passed/returned by reference. As mentioned elsewhere, implicitly bound variables will be bound //by value// and not //by reference//.
 +
 +==== Static Arrow Functions ====
 +The implementation currently supports static closures, for example <php>static fn($x) => static::get($x)</php>. While supported it is uncertain whether it should be included in the final version. Having the implementation support it allows testers to determine usefulness and value.
  
 ==== Ambiguities ==== ==== Ambiguities ====
Line 69: Line 75:
 Unfortunately the ''fn'' keyword must be a full keyword and not just a reserved function name; this is to break the ambiguities with ''<nowiki>=></nowiki>'' for array and yield keys. Unfortunately the ''fn'' keyword must be a full keyword and not just a reserved function name; this is to break the ambiguities with ''<nowiki>=></nowiki>'' for array and yield keys.
  
-Ilija Tovilo analyzed the top 1,000 PHP repositories on GitHub to find usages of ''fn''. [The gist](https://gist.github.com/morrisonlevi/473a7e0cb6e59c830224b1c71b8da28cprovides more information, but the rough findings are that all known existing usages of ''fn'' are in tests except one case where it is a namespace segment.+Ilija Tovilo analyzed the top 1,000 PHP repositories on GitHub to find usages of ''fn''. [[https://gist.github.com/morrisonlevi/473a7e0cb6e59c830224b1c71b8da28c|The gist]] provides more information, but the rough findings are that all known existing usages of ''fn'' are in tests except one case where it is a namespace segment.
  
 ==== Patches and Tests ==== ==== Patches and Tests ====
Line 87: Line 93:
  
 ===== Examples ===== ===== Examples =====
- 
-==== Snippets ==== 
 Taken from [[https://github.com/silexphp/Pimple/blob/62b5d317a83b02eea42b5b785b62a29fba458bcf/src/Pimple/Container.php#L242-L244|silexphp/Pimple]]: Taken from [[https://github.com/silexphp/Pimple/blob/62b5d317a83b02eea42b5b785b62a29fba458bcf/src/Pimple/Container.php#L242-L244|silexphp/Pimple]]:
  
Line 128: Line 132:
 }</PHP> }</PHP>
  
-==== Longer Examples ====+-----
  
-The following examples were given to me by [[https://gist.github.com/tpunt/b4f9bf30f43b9e148b73ce18245ab472|tpunt]]:+The following example was given to me by [[https://gist.github.com/tpunt/b4f9bf30f43b9e148b73ce18245ab472|tpunt]]:
  
 <PHP>$result = Collection::from([1, 2]) <PHP>$result = Collection::from([1, 2])
Line 164: Line 168:
  
 This RFC omitted this feature for these reasons. If arrow functions are accepted and become more common it may make sense to revisit this feature. This RFC omitted this feature for these reasons. If arrow functions are accepted and become more common it may make sense to revisit this feature.
 +
rfc/arrow_functions.txt · Last modified: 2018/06/28 14:35 by levim