On Mar 22, 2015, at 12:23 AM, Mihai Moldovan <[email protected]> wrote:

> On 22.03.2015 02:25 AM, Ryan Schmidt wrote:
> 
>> The best way to clear the build.target (or any option) is to simply not give 
>> a value, e.g. by writing just:
>> 
>> build.target
> 
> FWIW, I disagree here. Not giving it a value could, for the casual
> observer (not so much a macports dev, but a user not knowing internals)
> mean "default value" or "empty". This is ambiguous and we should avoid
> being ambiguous, especially for people not knowing MacPorts, to lower
> the entry threshold (and it *really* makes more sense to me to actually
> specify a value than rely on "guessing".)

You're ignoring the fact that Ryan's suggestion is the ubiquitous method of 
clearing options. I cannot think of a single circumstance in which clearing an 
option means "set to default".* Introducing an alternate notation for this is 
making things *more* confusing because someone who sees "build.target" and 
"build.target {}" will reasonably wonder whether there's any difference and 
whether they should favor one over the other.

More importantly, they are not actually equivalent. "build.target" sets 
build.target to an empty list. "build.target {}" sets build.target to a list 
with an empty list as its only member. The code that handles build.target may 
end up treating these equivalently, but you can't assume that this will be the 
case for all options. Options that are sensitive to this difference will 
require Ryan's method for clearing and your method for specifying a single 
empty value, and that makes things even more confusing.

tl;dr: The correct way of clearing a list is Ryan's method, and you should use 
it.

  * Ignoring the use of empty braces to signify an empty script, as for phases 
and variants.

vq
_______________________________________________
macports-dev mailing list
[email protected]
https://lists.macosforge.org/mailman/listinfo/macports-dev

Reply via email to