A symbol, standing for "
at". Has always been part of both
QWERTY and
ASCII, but was virtually unused until the
1990s.
@ is used, primarily, as the divider between
user and
provider in most Internet technologies-- for example, mcc@drowned.cx would refer to the user
mcc on the machine drowned.cx. This would assumedly refer to an
e-mail user, but the same notation would apply for
finger,
ftp,
http, etc.
As the internet first became widely used, @ became truly infamous; as the idiosyncratic marker of an e-mail address, @ was the most visible symbol of the Brave New Connected World. As such @ became commonly used in rather inappropriate places, at times seeming almost to be a synonym for "e", only even less dignified. Any product or service, so the marketing logic went, could immediately look internet-ish and get a stamp of legitimacy if you could somehow connect it to an "@". And so we get SETI@home, Excite@home/@home cable, the "@mark" (a name which Pippin, apple's disastrous attempt at creating a console gaming platform, was christened with just before it died), ad infinitum ad nauseum. No one is quite sure if these products are more end-user-friendly because of these names; what is certain, though, is because @ is an illegal character in domain names (for obvious reasons) and most search engines do not recognize the @ symbol, products with @s in their name are much much more difficult to look up on the internet. (Interestingly, the allegedly internet-friendly C# has the same problem.)
Perl uses @ to mark any
value or
variable with the type of
list. See
Perl 5 Pocket Reference: Data Types.
In
text listings of users in
IRC channels-- for example the results of a
/whois-- it is customary to prefix the names of
channel operators with the @ symbol. As a nod to this convention, users on
everything2 with
gods status have their names
suffixed with an @ in the
other users nodelet.
@ has also been adopted by
Objective C as its dedicated operator for Objective-C-specific language/compiler operations, on the logic that (besides ` and $) @ is the
only symbol in ASCII that
ANSI C does not use for anything. A complete list of all @
directives follows:
- Alone, @ is the Objective C stringize operator. Followed by any string, @ creates a static NSString object and returns it. Like, @"Example" anywhere in code would be equivalent to a pointer to an NSString containing "Example". @"" NSStrings are initialized at runtime and sit there in memory waiting to be used, exactly the same way as ordinary static "" strings.
@"" is pure syntactic sugar, but you must admit it is some lovely syntactic sugar.
- @interface : see the Objective C node for normal usage, protocol and category
- @implementation : see the Objective C node
- @protocol : see protocol
- @end marks the end of an @interface, @implementation or @protocol definition.
- @public, @private and @protected are used to set the scope of class instance variables to be either public, private, or protected. Instance variables are protected by default, but if you use any of these three directives in an @interface specification then all interface variables after that will be given the specified scope up until the next instance of @public, @private, @protected or @end.
- @class class-name can be placed at the top of a .h file to alert the compiler that class-name is a valid class which is defined in another file. It's exactly like extern.
- @selector : see selector.
- @encode : Every single class, structure, or other type in objective c has an associated character string in a special code that Objective C uses to describe types and groups of types. You can get a copy of the associated string by saying @encode( class_or_struct_or_type ) Perhaps someone should write the specifics of this up under Objective C Type Encoding. See see p. 124 of the Objective C book.
- @defs : This one's kind of odd, and what it does is take the name of a class and return a structure definition list. This can be used for one thing: to create a struct with the same internal data structure as a class. (Remember: While Objective C objects are implemented as structs, you can not treat the two interchangeably.) Let's say you had a class named AData. You could say
struct ADataLikeStruct {
@defs( AData );
}
And you will have defined a struct named ADataLikeStruct with the same data structure as AData. Once you've done this, if you have a pointer to an instance of class AData named myData, and you want to extract the member variable internalData, you can say ( (ADataLikeStruct *) myData )->internalData and it will pull internalData out of memory for you. (You could, of course, do the whole thing with much less trouble by saying [myData internalData], of course..Pretty much the only two usages of this are if you want to pass an Objective C object to a C function masquerading as a struct, or if you want to somehow break inside of an object to access a private variable. In ANY case, usage of @defs is frowned upon.
r4v5 says also, @ is the symbol for a human in
nethack..
The ASCII value of @ is 64. If you want to search for or hard-link to
this node, you must refer to it as "
@" rather than just @-- everything2 does not support searching for or linking to the @ symbol.