std.conv.to
bauss
jj_1337 at live.dk
Fri Jun 17 12:53:53 UTC 2022
On Friday, 17 June 2022 at 12:48:56 UTC, harakim wrote:
> On Friday, 17 June 2022 at 12:31:45 UTC, harakim wrote:
>> I can generically convert a string to a type using to!type. I
>> have a read function that does that. I have simplified the
>> example below:
>>
>> ```d
>> int readNumber()
>> {
>> return read!int(val => to!int(val), "number");
>> }
>>
>> string readTime()
>> {
>> return read!string(val => toTime(val), "time");
>> }
>>
>> private T read(T)(T function(string) transform, string
>> typeName)
>> {
>> string input = readln();
>> return transform(input);
>> }
>> ```
>> However, I want to be able to convert my own custom types as
>> well. How do I do that? Is there an operator overload I need
>> to override for that? Do I have to static if on the template
>> type and call the object?
>
> I have no idea why I was stuck on this problem for so long. I
> can specify anything I want in the transform and I even do in
> my own example lol. I am still curious if there is a way to
> make your type work with to!MyCustomType(source)
Just add a constructor to your type that takes the value of what
you want to convert.
Working example:
```d
struct Foo
{
int value;
this(int v)
{
value = v;
}
this(string v)
{
this(to!int(v));
}
}
void main()
{
auto foo = to!Foo("123");
writeln(foo.value);
}
```
More information about the Digitalmars-d-learn
mailing list