some Viewの「some」って何?
その1では「どうしてstruct」なの?を取り上げましたが、その2では「some」て何?を取り上げます。
var body: some View { VStack { HStack { Spacer()
この「some」はSwiftUIで初めて登場したものと思います。やはり、いろいろな人が「some」って何と思ったらしく、詳細な解説があります。ですので、プログラミングのコードとしての意味はそちらを参照ください。
上記サイトを引用すると、
Adding this keyword turns the return type into an opaque type which means that you and the compiler both know that this function will always return only one particular concrete type — you’ll just never know which one!
つまり、「bodyは必ず一つのViewをreturnするけれども、いくつかあるViewsのどれを具体的に返すかはわからない」の様な感じですね。具体的な説明は上記サイトや他の関連サイトをググってみて下さい。
ここでは別のアプローチで「some」の意味を考えてみることにします。当然「some」は英語を話す人(おそらく英語を母国語とする人、もしかしたら違うかもしれません!)が名付けたものでしょう。ですので、英英辞典の定義からその意味を探ってみましょう。
「view(無冠詞)」「a view」「views」「the view」「some views」「some view」の6つの違いを英英辞典を引用して調べてみましょう。
Viewの定義は、Merriam Webster英英辞典によると
「view(無冠詞)」は、定義3の[noncount]のように、何か(something)が見えると言うことに使用する際に、輪郭のないようなviewを指すようですね。
「a view」は、定義2によると、特定の場所から見える物の集合(the things)(body中のいくつかのStackやListの集合物)を一つの輪郭あるviewとしてみる場合に使用できそうですね。「views」というとそのような輪郭のあるviewが複数個あるという感じですかね。
「the view」の「the」は定冠詞ですね。定冠詞の用法自体は非常に難しいと感じていますが、イメージとしては「特定できて一つに決まる」という感じでしょうか。つまり、前に紹介したviewを「そのview」という感じかなと思います。
では、someがviewの前に付くと意味はどうなるのでしょうか?まず、「some views」のような複数形の物に掛かる「some」の定義を見てみましょう。
このように複数物があるけれども、その数がおおよそ(approximate)であったり、未特定(unspecified)である場合に使用されるようですね。
では、本題の「some + 単数形(view)」の意味はどうでしょうか?
1の意味であると単数でも複数でも使用できるようですが、意味としては、知られていない(not known)名前のない(not named)特定されていない(not specified)人や物(person or thing)を指して言うようですね。定義2のaやbの用法は数や量について(特に2bのようにとっても大きい数や量を指す場合もある)はこのviewの記載とはちょっと関係ないかなという感じですね。
つまり、「a view」のように輪郭のはっきりした一つのviewを特定することはこの時点ではできず、どれか知られたものや名前を付けることもできないけれども、まだ特定される前の「何らかのview」であることは現時点で判明しているという感じになりますかね。
このように柔軟に「some view」として記載することにより、いちいち具体的に場合分してプログラミングのコードを記載する面倒をなくす上手いアイデアのような気がします。
コメント