[Swift]いつキーワードを使えばいいですか?
なぜsometキーワードを使うのですか?
SWIFTUIでよく使われているのですが….何か知りたいことがありますか.
struct MyFirstView: View {
var body: some View {
Text("Hello world!")
}
}
上記のコードでは、「some」というキーワードによく触れることがあります.まず「some」とは何かを知っておきましょう
いくつかのキーワードはSWIFT 5.1の新機能です.
いくつかのキーワードはcomputed property bodyに不透明なタイプがあることを示します.
ここで不透明なタイプは?
protocol Shape {
func describe() -> String
}
struct Square: Shape {
func describe() -> String {
return "I'm a square. My four sides have the same lengths."
}
}
struct Circle: Shape {
func describe() -> String {
return "I'm a circle. I look like a perfectly round apple pie."
}
}
前述のShapeとは、プロトコルとShapeに従う複数のグラフィックを指す.func makeShape() -> Shape {
return Circle()
}
このようにしてどのような図形を復元するのか分からない場合makeShape()は不透明なタイプです.
SWIFTでは不透明なタイプを返すことはできません.
上記のコードでは、「Self」または「Associated type requirements」というエラーが発生するため、共通の制約として使用できるのは、プロトコル「Shape」のみです.
では、間違いをしたくないなら、どうすればいいのでしょうか.
正解は以下の通りです.
func makeShape() -> some Shape {
return Circle()
}
sometを使えば全て解決!
予めタイプを指定して関数内部を変更するジェニーリックタイプとは逆です.
特定の戻りタイプは、関数のコードに依存します.
本当に気まぐれなやつだ.
でもどうしてこれを使うの??
seomeキーワードが何なのかわかりましたが、なぜこれを使うのか分かりません
簡単な例をあげましょう
お客様は、いくつかの機能を作成するように要求しています.
顧客:1、2、3列逆転してください.func testFunc() -> Array<Int> {
return [1, 2, 3]
}
こんなに苦労して(疲れていても)機能を作ったのに、お客さんが急に心が変わりました.
顧客
この場合、testFunc()を使用する他のコードも修正する必要があり、多くの面で怒っています.
この時は少し書けばいいです.// 고객 변심 전
func testFunc() -> some Collection {
return [1, 2, 3]
}
// 고객 변심 후
func testFunc() -> some Collection {
return ["a": 1, "b": 2, "c": 3]
}
testFunc()の内部実装のみを修正し、関数以外の内容を変更する必要はありません.
これによりtestFunc()に依存する他のコードも修正する必要がなくなり、開発者はこのような状況を避けることができます!
なぜsyouでsomeを書いたのかがわかります.
syouでsomeを使用しない場合は、関数の戻り値のたびに、VSTOCK、HSTACK、Button、Textなどの特定のビュー値を指定する必要があります.これは非常に面倒です.
Reference
この問題について([Swift]いつキーワードを使えばいいですか?), 我々は、より多くの情報をここで見つけました
https://velog.io/@haze5959/Swift-some-키워드-언제-쓰면-좋을까
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
func testFunc() -> Array<Int> {
return [1, 2, 3]
}
// 고객 변심 전
func testFunc() -> some Collection {
return [1, 2, 3]
}
// 고객 변심 후
func testFunc() -> some Collection {
return ["a": 1, "b": 2, "c": 3]
}
Reference
この問題について([Swift]いつキーワードを使えばいいですか?), 我々は、より多くの情報をここで見つけました https://velog.io/@haze5959/Swift-some-키워드-언제-쓰면-좋을까テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol