Wie macht man einen memberwise Initialisierer für Strukturen in Swift standardmäßig öffentlich?
Hallo zusammen! Ich habe angefangen, Swift zu lernen, und bin auf ein Problem gestoßen, wenn ich mit Strukturen (struct) arbeite. Standardmäßig generiert Swift für Strukturen einen memberwise Initialisierer (elementweisen Initialisierer), der es ermöglicht, eine Instanz zu erstellen, indem Werte für alle Eigenschaften übergeben werden. Aber wenn ich eine Struktur mit der Zugriffsebene `public` deklariere, wird der memberwise Initialisierer internal, nicht public. Aus diesem Grund kann ich die Struktur nicht aus einem anderen Modul verwenden.
Hier ist ein Beispiel:
```swift
// ModuleA.swift
public struct User {
public let name: String
public let age: Int
// memberwise Initialisierer wird nicht explizit deklariert
}
// ModuleB.swift (anderes Modul)
let user = User(name: "Alice", age: 30) // Fehler: 'User' cannot be initialized with memberwise initializer
```
Ich verstehe, dass ich meinen eigenen public Initialisierer schreiben kann:
```swift
public struct User {
public let name: String
public let age: Int
public init(name: String, age: Int) {
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen