ubyte + ubyte = int

Salih Dincer salihdb at hotmail.com
Thu Oct 27 02:40:09 UTC 2022


On Thursday, 27 October 2022 at 01:57:15 UTC, Salih Dincer wrote:
> 
> You should help the compiler with return type:

I love D, enjoys it when I code...:)

I played a little on the code, and the following is possible and 
beautiful:

```d
// If you type auto instead of ubyte as return type, the return 
will be char.
ubyte toHexDigit(bool capital = false)(ubyte decimal)
{
   static if(capital) enum start = 'A';
                 else enum start = 'a';
   if(decimal < 10)
     return cast(char)(decimal + ubyte('0'));

   if(decimal < 16)
     return cast(char)(decimal - ubyte(10)
                               + ubyte(start));
   return '\xFF';
}

unittest
{
   assert(is(typeof(toHexDigit(9)) == ubyte));

   assert(toHexDigit(9) == 57); // '9'
   assert(toHexDigit(10) == 97); // 'a'
   assert(toHexDigit!true(10) == 65); // 'A'
}
```
SDB at 79


More information about the Digitalmars-d-learn mailing list