Hi Andrea,

Andrea Faulds wrote:

> Hi Christoph,
> 
>> On 2 Feb 2015, at 22:38, Christoph Becker <cmbecke...@gmx.de> wrote:
>>
>> And frankly, I don't see what's wrong with a weak type hint in this case:
>>
>>  function addVat(float $amount) {...}
>>
>> You're returning a float, anyway.
> 
> Given you’re dealing with currency, and given the fairly serious issues with 
> precision loss with int->float conversions and vice-versa… I would be highly 
> concerned if you used a weak type hint there.

Well, considering the given function body ($amount * 1.19), that doesn't
seem to be an issue.  In the general case, if one has to deal with
currency, float is problematic anyway.  I'd rather use a rational type
in this case (i.e. an immutable class with GMP[1] numerator and
denominator properties and the respective methods), which could be
combined with the actual currency (i.e. a "Money" class), if necessary.

>> OTOH, strict type hints would require a lot of manual conversions.
> 
> Sure, they do. But they’re *explicit* manual conversions, ones you can easily 
> grep for and that are obvious when reading code.

Indeed, code is read far more often than it's written (hopefully :)),
but still it might be annoying for many PHP programmers to write these
explicit manual conversions in the first place.[2]

[1] Or int, if your Big Integer Support RFC will pass (which I would
welcome, BTW).
[2] I'm aware that your current Scalar Type Hints RFC would not require
these manual conversions, but that doesn't seem to be the topic of
*this* thread. :)

-- 
Christoph M. Becker


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to