Flag & byLine confusion.
Ali Çehreli
acehreli at yahoo.com
Sun Dec 20 01:08:06 UTC 2020
On 12/19/20 4:40 PM, Mike Parker wrote:
>> 1. Yes.keepTerminator
>
> This is because of Yes is a struct with an opDispatch template that
> "forwards" to Flag!"keepTerminator".yes. This is the preferred syntax
> and will work with any Flag parameter.
I use Flag a lot but I am always bugged by how ugly the !"foo" part is
especially compared to Yes.foo. A section I had removed from my DConf
presentation asked whether we could add opDispatch to templates as well.
That would allow us to say Flag.foo.
I don't know how we could fit it in the syntax but it could be something
like this:
template Flag() {
auto opDispatch(string s)() {
alias opDispatch = FlagImpl!s;
}
}
Another thought that came to me to solve the same issue was to allow
string template parameters without needing to write the double quotes:
// Re-purposing the 'static' keyword for fun. :)
template Flag(static string s) {
// ...
}
So we could either write Flag!"foo" or Flag!foo. Similar to how
opDispatch would convert unknown symbols to strings. Perhaps like this?
template Flag(opDispatch s) {
// ...
}
Ali
More information about the Digitalmars-d-learn
mailing list