[swift-evolution] When to use argument labels (a new approach)

Dave Abrahams dabrahams at apple.com
Thu Feb 4 13:52:38 CST 2016


on Thu Feb 04 2016, Charles Constant <swift-evolution at swift.org> wrote:

>> Why isn't "to" more predictable than "toPoint?"  It's certainly more
>> universal.
>
> Function arguments can be unordered, if they have default values. A
> contrived example here...
>
> func rename( from nameA="index", from extA="html", to nameB="converted", to
> extB="shtml" )
>
> Maybe I'm confused, but that seems like it has to be illegal at worst, and
> confusing at best. But if you don't consistently use "from" and "to" then
> you're back to making special rules about everything.

I think it's a confusing and probably bad API no matter how you choose
those labels.

  file.rename(from: ("index", "html"), to: ("converted", "shtml"))

> It wouldn't matter if every argument has a unique Type, or if you take the
> time to create structs or tuples to bundle every piece of data together
> about "from" or about "with" etc. Maybe that's usually the case, but it's
> nice to have freedom to be lazy.

Let me be clear: these API guidelines are *not* going to optimize for
churning out APIs without careful consideration; it's thoroughly
incompatible with their mission.  If you want that freedom, you're free
to ignore the guidelines.  Sorry to be blunt, but that's how it is.

-- 
-Dave



More information about the swift-evolution mailing list