は、このステートメントfrom Apple documentを見たことがありますか?値9を割り当てているので、nil
にすることはできません。オプションのタイプの目的は(私が理解するように)保持することができることですnil.
はこのステートメントにnil
を保持する必要はありません。誰かが説明できますか?なぜ値を持つ定数にオプションの型を使用しますか?</p> <pre><code>let optionalInt: Int? = 9 </code></pre> <p>は、なぜあなたは、この定数の型として<code>Int?</code>を使用します。
答えて
私はあなたがそれを使用する可能性があるケースを見つけました。それは少しのストレッチですが、ここに行きます。
let x: Int? = whatever
を使用する理由の1つは、パラメータが異なるタイプのオーバーロードされた機能がある場合です。例:
func doSomething(x: Int)
{
print("\(x) is an Int")
}
func doSomething(x: Int?)
{
print("\(x) is an optional")
}
2番目のオーバーロードが確実に行われるようにするには、パラメータを明示的にオプションにする必要があります。
let y = 5
doSomething(y) // prints 5 is an Int
let z: Int? = 6
doSomething(z) // prints Optional(6) is an optional
私はまだ実生活でこれを見ていません。
アップルのマニュアルに関しては、単なる単純な例です。
これはちょっとしたことですが、let x:Intを使用するより良い理由が見つかる前に、 =これはこれまでのところ最高の答えです。多分、それには正当な理由はないでしょう。アップルは悪い例を示しています。 –
カップルのアイデア:
あなたはおそらく、あなたは正確にメソッドの定義に合わせて定数を定義する方法
func foo(xValue: Int?)->Int? {
// some logic
}
を持っていると仮定すると。
let optionalInt: Int? = 9
let fooVal = foo(optionalInt)
または(あなたの最初のlet
ステートメントを変更)、定数の値は、私はリンゴのドキュメントのこの特定の部分は、単に例示することを意図していると思うオプション
let optionalInt: Int? = foo(nil)
上記のfooの例では、int定数でfooを呼び出すことができますか? let nonOptionalInt:int = 9 let fooVal = foo(nonOptionalInt) このようにfooを呼び出すことができない場合、AgRizzoは値をオプションとして宣言する正当な理由を提供しています。誰かがコメントできますか? –
私はちょうど実験をしました。関数foo(xValue:Int?)に対して、型Intの値をfooに渡すと、それは引き続き機能します。だから、AgRizzoは私の質問に正当な理由はない。 @AndrewF。 –
- 私はあなたに2つの理由を提供しました。私の理由が気に入らないかもしれないが、私の理由が無効であることを証明していない。あなたはIntが暗黙的にOptional Intにキャストできることを証明しました。 – AgRizzo
を返す関数によって決定されますオプションの概念と他に何もない。おそらくlet
を使用して、常にlet
のプロパティ/変数を宣言して開始し、明示的に値を変更する必要がある場合はvar
に切り替えてください。
なぜlet foo: Int? = 9
を宣言すればよいのですか?let foo = 9
だけではありません。まあ、どこが必要なのか分かりません。 APIがInt?
を予期していても、Int
型の変数をそのようなAPIに引き渡すことができ、Swiftは暗黙的にそれを変換します。おそらく、それを汎用関数に渡して、汎用のInt?
バージョンを使用したい場合は、それをやりたがりますが、実用にはあまりにも学問的です。
これは正解です。値が 'nil'にならないことを知っているときは、オプションを作成することは決してうまくありません。たとえ遠くに取り込まれた他の回答の例であっても、必要に応じて明示的にキャストした方が良いでしょう。 – Sulthan
- 1. なぜ '<<<'フィルタリングはgdbのnullバイトで、 '<()'はしませんか?
- 2. はfirst_or_initialize私として<code>json</code>型の列を持つテーブルの上に<code>first_or_initialize</code>を使用したいJSON型の列
- 3. C++。なぜstd :: cout << char + int int値を出力しますか?
- 4. は私だけ前を使用した値の型</p> <pre><code>map<int id, struct_t*> table struct_t { int prev; int wt; string name; } </code></pre> <p>などの構造体とのマップを持って、マップC++
- 5. なぜ "class << self"式を使用するのですか?
- 6. はなぜAndroidのメーカーは、私が<strong>アンドロイド</strong><strong>スタジオ</strong><strong>1.3.2</strong>を使用しています
- 7. なぜ "<! - "はスタイルルールをコメントアウトしますが、 "<! - "はしないのですか?
- 8. シャドーイングの `let`バインディングを使用するこのコードはなぜハングアップしますか?インタプリタで</p> <pre><code>j = let x = 4 in let x = x * x in x </code></pre> <p>を:
- 9. ビューで<%と<%=の両方を使用するのはなぜですか?
- 10. 致命的なエラー:クラス 'HTML' のエラーが、私はマクロ</p> <p>を使用してみましすでに</p> <pre><code>"Require": { "Illuminate/html": "4.2. *" } </code></pre> <p>を追加したのはなぜLaravel 4.2
- 11. カスタムコンパレータ<int型、ペア<int, int>>
- 12. 私はint型のペアを含むセットを持っている場合は、</p> <pre><code>set<pair<int,int> > cells; </code></pre> <p>は、どのように私は「検索」を使用して設定でペアを抜けるかどうかを見つけることができ++
- 13. ハスケル:私は<code>Int</code>は頂点のインデックス番号であると<code>[Vertex]</code>がこの頂点に隣接する頂点であるカスタム再帰的なデータ型</p> <pre><code>data Vertex = Vertex Int [Vertex] </code></pre> <p>を持って再帰的なデータ型
- 14. LINQ ToListがここで使用されないのはなぜですか? <code>source</code>が<code>IEnumerable<T></code>ある</p> <pre><code>using(var iterator = source.GetEnumerator()) {...} </code></pre> <p>:
- 15. オブジェクト属性に値が設定されていないのはなぜですか?</p> <blockquote> <pre><code><Foo>Bar</Foo> </code></pre> </blockquote> <p>そして<code>Foo</code>要素の値を抽出し、このコード:
- 16. なぜostream :: operator <<はcharパラメータのグローバル関数ですか?
- 17. お知らせ:未定義の定数CURL_IPRESOLVEの使用は - 私はIPv6を使用しようとしている私の専用サーバー</p> <blockquote> <ol> <li>のIPv4</li> <li>IPv6の</li> </ol> </blockquote> <p>イムに2 IPアドレスを持つ 'CURL_IPRESOLVE'
- 18. そして、またはステートメント私は「and」と「or」 、そのようなあなたは、Luaの、などの言語、の場合と同様に <pre><code>int i = true && 5 || 3; </code></pre> <p></p>として、変数の値を定義するときに使用したい
- 19. C++:マップ<string, int>をイテレータを使用してベクトル<map <string, int>>にプッシュバックしますか?
- 20. operator <<にconstが必要なのはなぜですか?
- 21. なぜフォーオールですか? Intのサブタイプとは見なされませんが、forall型の式を使用できます。 Int型のどこでも期待されていますか?</p> <pre><code>a :: forall a. a a = undefined b :: Int b = a </code></pre><p>即ち:
- 22. Gitは<<<<<<< HEADをファイルに追加し続けます
- 23. フレンドオペレータを使用したコンパイラエラー<<
- 24. なぜ<clear></clear>は、app.configの<clear />と同じではありませんか?</p> <pre><code><connectionStrings> <clear/> <add etc..... /> </connectionStrings> </code></pre> <p>問題は、私はインストーラ製品(InstallShieldの)を使用していていると:
- 25. C++ - テンプレートパラメータ</p> </blockquote> <p>なしで使用</p> <blockquote> <p>クラス工assはなくて、それを使用する方法/回避策はありませんので、テンプレートパラメータなしのテンプレートクラスから使用列挙
- 26. $( '#table> tr')セレクタが一致しないのはなぜですか? jQueryを使って</p> <pre><code><table id='table'> <tr> <td>..</td> </tr> </table> </code></pre> <p>JSコード:
- 27. この関数宣言の乱用は未定義の動作を呼び出しますか?</p> <pre><code>int main() { int exit(); ((void(*)())exit)(0); } </code></pre> <p>あなたが見ることができるように、<code>exit</code>が間違った戻り値の型で宣言されていますが、間違った関数型と呼ばれることはありません:
- 28. param_typeコンストラクタがランダムな分布に対して明示的になるのはなぜですか?</p> <pre><code>int main() { std::random_device engine; std::uniform_int_distribution<size_t> dis; std::cout << dis(engine, {0, 5}) << std::endl; } </code></pre> <p>をしかし、それはエラーメッセージで失敗します:
- 29. なぜs4クラスのスロットとしてクラス定義を設定できないのですか?クラスと</p> <blockquote> <p>リスト "htest"</p> </blockquote> <p>ので、実際に<code>"htest"</code>がパッケージに定義された<em>正式</em>クラスではありません。
- 30. 型変換と型アサーションの違いは何ですか?</p>私が型アサーションや型変換を使用する必要があります <ol> <li><code>v = t.(aType) // type assertion</code></li> <li><code>v = aType(t) // type conversion</code></li> </ol> <p>:
あなたは、コードの行を見つけたAppleのdocのページをリンクしてください。これにより、より効率的に回答するためのコンテキストが得られます。 – RaphBlanchet
@RaphBlanchet私はそれを見つけました。 [オプションを導入する際には1行の例として使用されます](https://developer.apple.com/library/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson1.html#//apple_ref/doc/uid/TP40015214-CH3-SW1 )。 –
ここには、https://developer.apple.com/library/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson1へのリンクがあります。html#// apple_ref/doc/uid/TP40015214-CH3-SW1 「optionalInt」を検索します。これは1行の例ですが、例が意味をなさないと思います。 –