更新:これはPOPを学習するためのものです。私たちは< +>演算子を使用することができます知っているが、私は2つの要素を追加するために迅速な汎用的な関数を作成しようとしています一般的な追加機能を作成するためにswiftでPOPを使用する(
逃していますかを知りたい: - 数字などの要素は、単にそれらを追加した場合。 - 要素が文字列の場合は、連結します。ここで
は私のコードです:
protocol NumericType {
func +(lhs: Self, rhs: Self) -> Self
}
extension Double : NumericType {}
extension Float : NumericType {}
extension Int : NumericType {}
protocol Addable {
func addGenerically<T>(element1: T, element2: T) -> T
}
extension Addable where Self:NumericType {
func addGenerically<T:NumericType>(element1: T, element2: T) -> T {
return (element1) + (element2)
}
}
// This throws error: inheritance from non protocol, non class type strings
extension Addable where Self:String {
func addGenerically<T:String>(element1: T, element2: T) -> T {
return (element1) + (element2)
}
}
class MyVC: UIViewController{
override func viewDidLoad() {
super.viewDidLoad()
let n1 = Double(3.4)
let n2 = Double(3.3)
let n3 = Addable.addGenerically(n1, element2: n2)
}
任意のアイデアは、これを完了し、これを使用する方法?
私はあなたがここで達成しようとしていることを本当に確信していません。 Swiftはあなたが使用する型に基づいてどの '+'演算子の実装を呼び出すかをすでに推測できます。文字列を連結して数字を追加するので、独自の 'addGenerically'関数を作成する必要はありません。 'Addable 'のように関数を実装することもできません。addGenerically(n1、element2:n2) ' - 単に' Addable'は具体的な型ではないので意味がないので、静的関数を呼び出すことはできません。 – Hamish
@ originaluser2:これはPOPを学習するためのものです。私は何が欠けているのか知りたい –