Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 1022 - Opaque Type

2020/21の年末年始は、全集中でSwift UIの勉強!ってできるだろうか。

色々と忘れてしまった概念が多いので、ブラシュアップ、ブラシュアップ、あれ?ブラシュアップって言うけど、ちゃんと理解できていたのか?

まずもって「Opaque Type」を日本語で何て表現したらいいのか分からない。「不透明型」?

いやあ、ちょっと違うな。「不明瞭型」... そんな訳語で表現している人もいないようだ。

ネットで調べると、プログラマの皆さんは、誰もが「Opaque型」と書いている。ということは、「オパーク型」と言っているのだろうか?なんか安易なような気がするけど、やはり英語圏の新しい概念の言葉が、日本語にかみ砕かれるまで時間がかかるのだろう。

Swiftで用意されている、ファンクション、メソッド、クロージャ(どうしてもカタカナ言葉が羅列するな)は、オパーク型を返すように定義できるけど、コンパイルするとき、必ず特定の「型」を持った値を返さないといけない。どこかで聞いた事があるよね。これは「ジェネリック」とよく似ている。ジェネリックは、何となく型の明示法が煩雑で、分かりにくいので、色々と問題があったんでしょう。オパーク型という新しい概念を導入することで、ジェネリックの代わりにしたような気もする。

func reversit(myList: [String]) -> some Collection {
    let reversed = myList.reversed()
    return reversed
}

let reversedList = reversit(myList: ["One", "Two", "Three", "Four", "Five"])
print(Array(reversedList)) // ここで型を明示する必要がある

["Five", "Four", "Three", "Two", "One"]

とこんな風に使うみたい。