rfc:numeric_literal_separator
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
rfc:numeric_literal_separator [2019/05/27 16:37] – Tweak examples theodorejb | rfc:numeric_literal_separator [2019/06/14 09:42] – Implemented nikic | ||
---|---|---|---|
Line 3: | Line 3: | ||
* Author: Theodore Brown < | * Author: Theodore Brown < | ||
* Based on [[https:// | * Based on [[https:// | ||
- | * Status: | + | * Status: |
+ | * Discussion: https:// | ||
* Target version: PHP 7.4 | * Target version: PHP 7.4 | ||
* Implementation: | * Implementation: | ||
Line 68: | Line 69: | ||
===== Unaffected PHP Functionality ===== | ===== Unaffected PHP Functionality ===== | ||
- | Underscores | + | Adding an underscore between digits |
- | lexing stage, so the runtime | + | change its value. The underscores are stripped out during the lexing |
+ | stage, so the runtime | ||
<code php> | <code php> | ||
Line 167: | Line 169: | ||
literal, which allows searching for a value like " | literal, which allows searching for a value like " | ||
the numbers containing that specific byte. | the numbers containing that specific byte. | ||
+ | |||
+ | ==== Should it be the role of an IDE to group digits? ==== | ||
+ | |||
+ | It has been suggested that numeric literal separators aren't needed | ||
+ | for better readability, | ||
+ | display large numbers in groups of three digits. | ||
+ | |||
+ | However, it isn't always desirable to group numbers the same way. | ||
+ | For example, a programmer may write '' | ||
+ | depending on whether or not it represents a financial quantity stored | ||
+ | as cents: | ||
+ | |||
+ | <code php> | ||
+ | $total = 100_500_00; // represents $100,500.00 stored as cents | ||
+ | |||
+ | $total = 10_050_000; // represents $10,050,000 | ||
+ | </ | ||
+ | |||
+ | Binary and hex literals may also be grouped by a varying number of | ||
+ | digits to reflect how they are used (e.g. bits may be separated into | ||
+ | nibbles, bytes, or words). An IDE cannot do this automatically | ||
+ | without knowing the programmer' | ||
==== Why resurrect this proposal? ==== | ==== Why resurrect this proposal? ==== | ||
Line 188: | Line 212: | ||
Andrea Faulds summarized the considerations [[https:// | Andrea Faulds summarized the considerations [[https:// | ||
- | > This feature offers some benefit in some cases. It doesn' | + | < |
- | > much new complexity. There' | + | This feature offers some benefit in some cases. It doesn' |
- | > the form of the existing number tokens. It fits in well [with] what' | + | much new complexity. There' |
- | > already there, consistently applying to all number literals. It follows | + | the form of the existing number tokens. It fits in well [with] what' |
- | > established convention in other languages. Its appearance at least hints | + | already there, consistently applying to all number literals. It follows |
- | > that values with these separators are not constants or identifiers, | + | established convention in other languages. Its appearance at least hints |
- | > numbers, reducing potential for confusion. It limits its own application | + | that values with these separators are not constants or identifiers, |
- | > to prevent abuse (no leading, trailing, or repeated separators). And | + | numbers, reducing potential for confusion. It limits its own application |
- | > it's relatively intuitive. | + | to prevent abuse (no leading, trailing, or repeated separators). And |
+ | it's relatively intuitive. | ||
+ | </ | ||
==== Comparison to other languages ==== | ==== Comparison to other languages ==== | ||
Line 217: | Line 243: | ||
===== Vote ===== | ===== Vote ===== | ||
- | Add numeric literal | + | Voting started 2019-05-30 and ended 2019-06-13. |
+ | |||
+ | <doodle title=" | ||
+ | | ||
+ | | ||
+ | </ | ||
===== References ===== | ===== References ===== | ||
Line 225: | Line 256: | ||
Discussion from previous RFC: https:// | Discussion from previous RFC: https:// | ||
- | Blog post about implementation: | + | Blog post about original |
rfc/numeric_literal_separator.txt · Last modified: 2019/08/19 19:58 by theodorejb