W klasie Swift chcę użyć właściwości jako domyślnej wartości parametru dla metody tej samej klasy.Używanie właściwości jako domyślnej wartości parametru dla metody w tej samej klasie
Oto mój kod:
class animal {
var niceAnimal:Bool
var numberOfLegs:Int
init(numberOfLegs:Int,animalIsNice:Bool) {
self.numberOfLegs = numberOfLegs
self.niceAnimal = animalIsNice
}
func description(animalIsNice:Bool = niceAnimal,numberOfLegs:Int) {
// I'll write my code here
}
}
Problem polega na tym, że nie mogę używać mojego niceAnimal własności jako wartość domyślną funkcją, ponieważ wyzwala mi błąd kompilacji:
'animal.Type' nie ma elementu o nazwie 'niceAnimal'
jestem doin G coś nie tak? A może w Swift jest to niemożliwe? Jeśli to niemożliwe, czy wiesz dlaczego?
Dziękuję bardzo za odpowiedź. Jako rozwijający się, co myślisz o tym zachowaniu? –
Nie jestem pewien. Sądzę, że domyślne wartości parametrów są miłym udogodnieniem, ale mogą również prowadzić do zaskakujących i złożonych przypadków narożnych związanych z oceną domyślnego wyrażenia. Wiem, że w Pythonie robi się nieprzyjemnie. Widzę więc cnotę zachowania tego w sposób jednoznaczny i ograniczony. Myślę, że obejście tego problemu nie jest takie złe. – algal
OK Rozumiem, Apple prawdopodobnie chciało zachować to proste, wtedy ... –