Например, я хочу указать тип, который может быть Integer
или String
, и использовать его как специальный тип в func
, я попробовал typealias
, но это не решит проблему, потому что typealiases не может иметь or
аргументы, поскольку он использует только &
, поэтому рассмотрим случай ниже.
typealias alis = StringProtocol & Numeric
func foo <T: alis> (vee: T) -> T{
// do something
return vee
}
Я хочу, чтобы эта функция принимала тип параметра (Int
или String
), а не чего-либо еще (<T>
),
, как вы можете видеть, я пыталсяс typealias и у меня нет ошибки компиляции.
однако попытка использования функции приведет к этим ошибкам.
foo(vee: 1) //Argument type 'Int' does not conform to expected type 'StringProtocol'
И
foo(vee: "v") //Argument type 'String' does not conform to expected type 'Numeric'
это достижимо с помощью swift?если так как