この関数をジェネリック型にするにはどうすればよいですか?

スティーブスミス

この関数をジェネリック型に変換するにはどうすればよいですか?

func addThreeValue(value1:String,value2:String,value3:String) -> String {
    let concatenated = value1 + value2 + value3

    return concatenated
}
jtbandes

これは機能しません

func addThreeValues<T>(v1: T, _ v2: T, _ v3: T) -> T {
    return v1 + v2 + v3
}

コンパイラは+Tsで動作する演算子を認識していないためです。

適切な演算子を見つけることができるように、汎用パラメーター制約する必要があります+IntegerTypeプロトコルは1を提供します。

func addThreeValues<T: IntegerType>(v1: T, _ v2: T, _ v3: T) -> T {
    return v1 + v2 + v3
}

ただし、StringはIntegerTypeプロトコルに準拠していません。

addThreeValues("a", "b", "c")  // error: cannot invoke 'addThreeValues' with an argument list of type '(String, String, String)'

これを回避するには、独自のプロトコルを定義し、使用するタイプに準拠するようにします。

protocol Addable {
    func +(lhs: Self, rhs: Self) -> Self
}
extension String: Addable {}
extension Int: Addable {}

func addThreeValues<T: Addable>(v1: T, _ v2: T, _ v3: T) -> T {
    return v1 + v2 + v3
}

今これは動作します:

addThreeValues(1, 2, 3)        // returns 6
addThreeValues("a", "b", "c")  // returns "abc"

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C#のジェネリック関数で型を渡すにはどうすればよいですか?

分類Dev

TypeScript:この関数のジェネリックに型を明示的に渡すにはどうすればよいですか?

分類Dev

型ジェネリック関数ポインタを渡すにはどうすればよいですか?

分類Dev

ジェネリック関数型にオプションの引数型を含めるにはどうすればよいですか?

分類Dev

ジェネリック関数の値を作成するにはどうすればよいですか?

分類Dev

Swiftでジェネリック型の引数を取る関数を再割り当てするにはどうすればよいですか?

分類Dev

ジェネリック型パラメーターを使用して関数のベクトルを作成するにはどうすればよいですか?

分類Dev

MLReaderで関数をジェネリックにするにはどうすればよいですか

分類Dev

重要な関係を持つ複数のジェネリック型を持つメンバーを宣言するにはどうすればよいですか?

分類Dev

TypeScriptのジェネリック関数で有界型を使用するにはどうすればよいですか?

分類Dev

ジェネリック型のクラスを取得するにはどうすればよいですか?

分類Dev

指定されたジェネリック型で関数型を作成するにはどうすればよいですか?

分類Dev

引数キーがジェネリック型でリストされていることを確認するにはどうすればよいですか?

分類Dev

GsonのTypeTokenのジェネリック型を配置するにはどうすればよいですか?

分類Dev

C ++でジェネリックstringToVector関数を作成するにはどうすればよいですか?

分類Dev

ジェネリック関数で「typeofT」を参照するにはどうすればよいですか?

分類Dev

ジェネリック型に、ジェネリック関数でAdd、Sub、Mul、Divなどの操作を実装するように要求するにはどうすればよいですか?

分類Dev

このネストされたジェネリック型クラスを単純化するにはどうすればよいですか

分類Dev

Objective-Cのジェネリック型を見つけるにはどうすればよいですか?

分類Dev

別のジェネリック基本クラスにC#ジェネリック型制約を追加するにはどうすればよいですか?

分類Dev

Typescript:ジェネリック型がJSONのサブセットであることを確認するにはどうすればよいですか?

分類Dev

実行時にジェネリック型を取得するにはどうすればよいですか?

分類Dev

ジェネリック型SignedNumericをFloatに変換するにはどうすればよいですか?

分類Dev

ジェネリック型に拡張機能を追加するにはどうすればよいですか?

分類Dev

複数のジェネリック型パラメーターを使用して型を作成するにはどうすればよいですか

分類Dev

ジェネリック型が特定の表現を持つことを静的に強制するにはどうすればよいですか?

分類Dev

3つの関数を1つのジェネリック関数に変換するにはどうすればよいですか?

分類Dev

このシナリオでジェネリックスと型制約を正しく使用するにはどうすればよいですか?

分類Dev

複合ジェネリック型から値を取得するにはどうすればよいですか?

Related 関連記事

  1. 1

    C#のジェネリック関数で型を渡すにはどうすればよいですか?

  2. 2

    TypeScript:この関数のジェネリックに型を明示的に渡すにはどうすればよいですか?

  3. 3

    型ジェネリック関数ポインタを渡すにはどうすればよいですか?

  4. 4

    ジェネリック関数型にオプションの引数型を含めるにはどうすればよいですか?

  5. 5

    ジェネリック関数の値を作成するにはどうすればよいですか?

  6. 6

    Swiftでジェネリック型の引数を取る関数を再割り当てするにはどうすればよいですか?

  7. 7

    ジェネリック型パラメーターを使用して関数のベクトルを作成するにはどうすればよいですか?

  8. 8

    MLReaderで関数をジェネリックにするにはどうすればよいですか

  9. 9

    重要な関係を持つ複数のジェネリック型を持つメンバーを宣言するにはどうすればよいですか?

  10. 10

    TypeScriptのジェネリック関数で有界型を使用するにはどうすればよいですか?

  11. 11

    ジェネリック型のクラスを取得するにはどうすればよいですか?

  12. 12

    指定されたジェネリック型で関数型を作成するにはどうすればよいですか?

  13. 13

    引数キーがジェネリック型でリストされていることを確認するにはどうすればよいですか?

  14. 14

    GsonのTypeTokenのジェネリック型を配置するにはどうすればよいですか?

  15. 15

    C ++でジェネリックstringToVector関数を作成するにはどうすればよいですか?

  16. 16

    ジェネリック関数で「typeofT」を参照するにはどうすればよいですか?

  17. 17

    ジェネリック型に、ジェネリック関数でAdd、Sub、Mul、Divなどの操作を実装するように要求するにはどうすればよいですか?

  18. 18

    このネストされたジェネリック型クラスを単純化するにはどうすればよいですか

  19. 19

    Objective-Cのジェネリック型を見つけるにはどうすればよいですか?

  20. 20

    別のジェネリック基本クラスにC#ジェネリック型制約を追加するにはどうすればよいですか?

  21. 21

    Typescript:ジェネリック型がJSONのサブセットであることを確認するにはどうすればよいですか?

  22. 22

    実行時にジェネリック型を取得するにはどうすればよいですか?

  23. 23

    ジェネリック型SignedNumericをFloatに変換するにはどうすればよいですか?

  24. 24

    ジェネリック型に拡張機能を追加するにはどうすればよいですか?

  25. 25

    複数のジェネリック型パラメーターを使用して型を作成するにはどうすればよいですか

  26. 26

    ジェネリック型が特定の表現を持つことを静的に強制するにはどうすればよいですか?

  27. 27

    3つの関数を1つのジェネリック関数に変換するにはどうすればよいですか?

  28. 28

    このシナリオでジェネリックスと型制約を正しく使用するにはどうすればよいですか?

  29. 29

    複合ジェネリック型から値を取得するにはどうすればよいですか?

ホットタグ

アーカイブ