On Sunday, 14 May 2017 at 21:34:35 UTC, zabruk70 wrote:
On Sunday, 14 May 2017 at 21:22:20 UTC, Moritz Maxeiner wrote:
The full line is `alias Base64 = Base64Impl!('+', '/');`

Yes. When we use it like this:

  const(char)[] encoded = Base64.encode(data);

then template instantiated and produce ... what?

Have you read the language specification I linked to?
Base64 refers to a (fully) parametrized template. If you use the symbol Base64, you will access its instantiation; '.encode' then accesses the member "encode" in the scope of that template instance, which happens to be a function. That function then gets called with "data" as its argument and returns the encoded data.


I don't understand what you're trying to express here.

What kind of symbols (class name, structure name, type)
can be used with dot in D language?

Pretty much any symbol. Any type (or alias to one) will at least have properties[1] and any variable will be open to UFCS[2].


What produced by template instantiation `Base64Impl!('+', '/')`
then i use alias `Base64`?

I'm sorry, but I have no idea what you're trying to convey here.


You can create a base32 encoder however you like, D has lots of different ways you could approach this; you can even do it in a

But i want mimic std.base64 syntax.
I want to write something like

  string encoded = Base32.encode(data);

And i don't want to use template.

Then use a struct with static member functions:

struct Base32
{
    static [...] encode([...]) { [...] }
    static [...] decode([...]) { [...] }
}

[1] https://dlang.org/spec/property.html
[2] https://tour.dlang.org/tour/en/gems/uniform-function-call-syntax-ufcs

Reply via email to