関数はタイプですか?

2956 ワード

キャンプ場の話題は私を深く悩ませた.
swift自由自在に関数(a.k.a一級オブジェクト)を割り当てて使用することは既知であるが,タイプに疑問がある
いいえ、その前に타입とは何か説明できないことに気づきました.

🐵 関数「タイプ」はタイプです



まず、SWIFTは、タイプをNamed TypeおよびCompound Typeに分割する
両者は視覚的に明らかな違いがある.
//Named type
let hisName: String = "Alex"
let hisAge: Int = 20

//Compound type
let hisAction: (Int) -> Bool = goToSchool
let hisParents: (mother: String, father: String) = ("Kim", "Jang")

  • Name typeは明確に統一されたタイプで命名されています
    (ex. String, Int)

  • Compound typeはFunction/Topleではなく、要素を組み合わせてタイプのように使用します
    (ex. (Int) -> Bool, (String, String))
  • 要するに、
    関数タイプは、要素を組み合わせたComponentTypeの一種です

    🐇 関数のタイプと関数は違いますか?


    ここまで,関数タイプはタイプが正しいことを証明した.
    しかし、元の問題は「関数はタイプですか?」に質問
    では「함수타입はタイプ」という命題は
    함수がタイプ」であることを証明できますか?
    まず、関数のタイプと関数が同じかどうかを見てみましょう.
    分かりやすくするために少し問題を変えた.
    整数タイプと整数は違いますか?
    この問題の答えは想像以上にはっきりしている
    let number: Int = 10
    上記のコードでは、Intは整数タイプであり、10は整数である
    すなわち、整数タイプと整数の関係
    タイプとインスタンスの関係と見なすことができます
    再び戻ってきて、
    関数のタイプと関数は違いますか?
    違います.
    関数タイプはタイプ、関数は関数タイプのインスタンスです

    🎉 n/a.結論

    함수 타입タイプが正しい
    ただし、함수はタイプではありません
    (関数タイプのインスタンス概念)