Функции/свойства затенения/свойства с использованием Generics работают вне объекта, но не внутри него?IOS

Программируем под IOS
Ответить
Anonymous
 Функции/свойства затенения/свойства с использованием Generics работают вне объекта, но не внутри него?

Сообщение Anonymous »

У меня есть общий тип (Bar), что тенит реализацию функции foo в зависимости от t :
struct Bar {
func foo() {
print("foo generic")
}

func foo() where T == String {
print("foo string")
}
}
< /code>
Когда я его называю, он работает так, как я ожидаю: < /p>
B().foo() // foo generic
B().foo() // foo string

Теперь я создаю другую функцию, которая вызывает foo внутри объекта:
func boo() { foo() }

Но когда я вызываю BOO , он не использует строку «Shadow» Ally.B().boo() // foo generic

вещи, которые я попробовал:

Я попытался отметить общую функцию @_disforuvedoverload , но она ничего не сделала. И я был удивлен, когда это не сработало. Я хотел бы знать, почему это решение не сработало.struct Bar {
let inner: Far

func boo() {
inner.foo()
}
}

struct Far {
func foo() {
print("foo generic")
}

func foo() where T == String {
print("foo string")
}
}
< /code>
Уведомление: < /h3>
Я столкнулся с этой проблемой, создавая тело Swiftui. Так что я не могу использовать некоторые решения.// Very simplified.

struct MyView: View {
let client: APIClient

var body: some View {
Button("Fetch") {
Task(operation: fetchData) // Always calls generic
}
}

func fetchData() async {
await client.fetch()
}

func fetchData() async where APIClient: FetchSpecially {
await client.specialFetch()
}
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... -but-not-i
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»