On 11 May 2017, at 23:48, Jose Cheyo Jimenez via swift-dev
<[email protected]> wrote:
> `class` is a contextual keyword because it can be used to declare an object
> and declare a class variable. Right?
>
> I believe static can only be used inside Classes, Structs, Enums, Protocols
> and Extensions so how is `static` a _contextual_ keyword?
I think you’ve misunderstood the meaning of “contextual keyword”. Here it
means that the string may or may not be a keyword depending on the context.
Consider:
enum SomeEnum {
case `static`
case `class`
}
print(SomeEnum.class)
print(SomeEnum.static)
func `class`(class: Int) { }
func `static`(static: Int) { }
`class`(class: 0)
`static`(static: 1)
Through this I’d like to use `static` and `class` as identifiers. I have to
escape them in some contexts, where they are being treated as keywords, but not
in the others.
This is a neat-o feature because it avoids unnecessary conflicts. The example
that most readily springs to mind is the use of `for` as a parameter label in
many places in the standard library and Foundation.
> Is there a reason why static is a keyword and not a “buildIn” modifier like
> final, public etc?
I can’t help you with that one I’m afraid.
Share and Enjoy
--
Quinn "The Eskimo!" <http://www.apple.com/developer/>
Apple Developer Relations, Developer Technical Support, Core OS/Hardware
_______________________________________________
swift-dev mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-dev