Chcę zadeklarować funkcję, której mogę użyć tylko w konkretnym przypadku wyliczenia. Na przykład mam wyliczenie CustomTextFieldTypes. Ma to następujące przypadki i funkcje.Funkcje Swift Enum
enum CustomTextFieldTypes {
case CardType
case CardNumber
case CardExpiryDate
case CardName
case CCVNumber
func inputCardNumber(cardNumber: String!, cardNumberTextField: XCUIElement?) {
cardNumberTextField?.typeText(cardNumber)
}
func inputCardCCVNumber(cardCCVNumber: String!, cardCCVNumberTextField: XCUIElement?) {
cardCCVNumberTextField?.typeText(cardCCVNumber)
}
}
Teraz chcę wywołać funkcję inputCardNumber(...)
tylko dla przypadku CustomTextFieldTypes.CardNumber
. Mogę zrobić następujących ...
CustomTextFieldTypes.CardNumber.inputCardNumber(...)
Ale w tym samym czasie mogę to zrobić ...
CustomTextFieldTypes.CardExpiryDate.inputCardNumber(...) or
CustomTextFieldTypes.CardNumber.inputCardNumber(...)
Chcę tylko wywołać funkcję inputCardNumber(...)
dla przypadku CardNumber
. Nie z innego przypadku sama enum. Jak to osiągnąć?
góry dzięki za wszelką pomoc
Edit- Oto niektóre tła na co robię. Pisałem test interfejsu użytkownika, który wprowadzał tekst do pól tekstowych. Chciałem zachować kod wejściowy z mojego pliku testowego i zacząłem "Experimenting" z funkcjami wyliczania i wyliczania. Zastanawiałem się, czy mogę mieć funkcję jawnie dostępną dla przypadku enum. Sądząc po komentarzach, nie mogę tego zrobić (sprawdziłem online, ale nie dotarłem daleko). To nie jest zła architektura ani nic, po prostu dzieliłem kod testowy ..
Dziękuję wszystkim za odpowiedź.
Co próbujesz zrobić? I po co używać 'XCUIElement'? Są tylko do testu –
Dlaczego umieścić funkcję w wyliczeniu? Jakie są tego korzyści? – Imbue
Nie można wykonać funkcji dostępnej tylko dla jednego przypadku wyliczenia. Każda funkcja w wyliczeniu jest dostępna dla każdego przypadku wyliczenia. Z małego fragmentu kodu wynika, że masz problem z architekturą i prawdopodobnie masz lepszy projekt, by zrobić to, co chcesz. Nie mamy wystarczających informacji, aby dać ci lepszą radę. – keithbhunter