介紹
人類的眼睛並沒有為快速解析長數位序列而優化。因此,缺乏可視分隔符會使讀取和偵錯程式碼的時間更長,並可能導致意外的錯誤。
1000000000; // Is this a billion? 100 million? 10 billion? ?107925284.88;? // What scale or power of 10 is this?
此外,沒有視覺分隔符,數位文字無法傳達任何額外的資訊,例如財務數量是否以美分儲存:
$discount = 13500; // Is this 13,500? Or 135, because it's in cents?
建議
通過支援數位文字中的下劃線來視覺化地分隔數位組,從而提高程式碼的可讀性。
$threshold = 1_000_000_000; // a billion! $testValue = ?107_925_284.88; // scale is hundreds of millions $discount = 135_00; // $135, stored as cents
下劃線分隔符可用於PHP支援的所有數值文字元號中:
6.674_083e-11; // float 299_792_458; // decimal 0xCAFE_F00D; // hexadecimal 0b0101_1111; // binary 0137_041; // octal
限制
唯一的限制是數位文字中的每個下劃線必須直接位於兩個數位之間。這條規則意味著下面的用法都不是有效的數位文字:
_100; // already a valid constant name // these all produce "Parse error: syntax error": 100_; // trailing 1__1; // next to underscore 1_.0; 1._0; // next to decimal point 0x_123; // next to x 0b_101; // next to b 1_e2; 1e_2; // next to e
PHP功能不受影響
在數位文字的數位之間新增下劃線不會改變其值。下劃線在詞法分析階段被刪除,因此執行時不受影響。
var_dump(1_000_000); // int(1000000)
此RFC不會將字串的行為更改為數位轉換。數位分隔符旨在提高程式碼的可讀性,而不是改變輸入的處理方式。
向後不相容的更改
沒有。
翻譯:https://wiki.php.net/rfc/numeric_literal_separator
以上就是PHP 7.4中的數值文字分隔符(Numeric Literal Separator )的詳細內容,更多請關注TW511.COM其它相關文章!