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