forked from dlang-tour/german
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Update install-d-locally.md * Update links-documentation.md * Add basics/loops.md (#30) * Add basics/foreach.md (dlang-tour#31) * Add basics/further-reading.md (dlang-tour#36) * Add basics/templates.md (dlang-tour#38) * Add basics/delgates.md (dlang-tour#40) * Add basics/interfaces.md (dlang-tour#35) * Add basics/ranges.md (dlang-tour#33) * Add basics/exceptions.md (dlang-tour#37) * Add basics/associative-arrays.md (dlang-tour#34) * Add basics/alias-strings.md (dlang-tour#32) * Add basics/classes.md (dlang-tour#39) * Create attributes.md * Create attributes.md * Update classes.md (dlang-tour#44) * Update index.yml enable all files in basics
- Loading branch information
Showing
4 changed files
with
88 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
# Attribute | ||
|
||
Funktionen können in D auf verschiedene Arten mit | ||
Attributen versehen werden. Im folgenden werden | ||
zwei spracheigene und die benutzerdefinierten | ||
Attribute näher beleuchtet. Darüber hinaus gibt | ||
es `@safe`, `@system` und `@trusted`, die bereits | ||
im ersten Kapitel erwähnt wurden. | ||
|
||
### `@property` | ||
|
||
Eine als `@property` markierte Funktion sieht für | ||
die äußere Welt wie ein normaler Member aus. | ||
|
||
struct Foo { | ||
@property bar() { return 10; } | ||
@property bar(int x) { writeln(x); } | ||
} | ||
|
||
Foo foo; | ||
writeln(foo.bar); // ruft tatsächlich foo.bar() auf | ||
foo.bar = 10; // calls foo.bar(10); | ||
|
||
### `@nogc` | ||
|
||
Wenn der D-Compiler auf eine als `@nogc` markierte Funktion | ||
trifft, wird sichergestellt, dass **keine** Speicherallokationen | ||
im Kontext dieser Funktion vorgenommen werden. Eine | ||
`@nogc`-Funktion darf nur Funktionen aufrufen, die ihrerseits | ||
als `@nogc` markiert sind. | ||
|
||
void foo() @nogc { | ||
// FEHLER: | ||
auto a = new A; | ||
} | ||
|
||
### Benutzerdefinierte Attribute (UDAs) | ||
|
||
Jede Funktion und jeder Typ in D kann mit benutzerdefinierten | ||
Attributen (engl: user-defined attributes, UDAs) versehen werden: | ||
|
||
struct Bar { this(int x) {} } | ||
|
||
struct Foo { | ||
@("Hello") { | ||
@Bar(10) void foo() { | ||
... | ||
} | ||
} | ||
} | ||
|
||
Jeder Typ, spracheigen oder benutzerdefiniert, kann | ||
Funktionen als Attribut beigefügt werden. | ||
Die Funktion `foo()` in diesem Beispiel besitzt die | ||
Attribute `"Hello"` vom Typ `string` und `Bar` von Typ | ||
`Bar` mit dem Wert `10`. Zugang zu den Attributen | ||
bieten die im Compiler integrierten *Traits* | ||
(dt.: Merkmale / Eigenschaften) mittels | ||
`__traits(getAttributes, Foo)`, die einen | ||
[`TypeTuple`](https://dlang.org/phobos/std_typetuple.html) | ||
zurückgeben. | ||
|
||
Benutzerdefinierte Attribute können generischen Code | ||
verbessern, indem sie benutzerdefinierten Typen eine | ||
weitere Dimension hinzufügen, die Kompilierzeit-Generatoren | ||
helfen, sich diesen spezifischen Typen anzupassen. | ||
|
||
### Weiterführende Quellen | ||
|
||
- [Benutzerdefinierte Attribute in _Programming in D_](http://ddili.org/ders/d.en/uda.html) | ||
- [Attribute in D](https://dlang.org/spec/attribute.html) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters