問題タブ [optional-chaining]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
7 に答える
10340 参照

python - PythonでNoneを返す可能性のある属性ルックアップをチェーンする方法は?

私の問題は一般的な問題です。中間の属性ルックアップの1つが返される可能性がある場合に、一連の属性ルックアップをチェーンする方法ですがNone、Beautiful Soupを使用しようとしてこの問題に遭遇したので、そのコンテキストで質問します。

Beautiful SoupはHTMLドキュメントを解析し、そのドキュメントの構造化されたコンテンツにアクセスするために使用できるオブジェクトを返します。たとえば、解析されたドキュメントが変数にある場合、次のsoupようにタイトルを取得できます。

私の問題は、ドキュメントにタイトルがない場合にsoup.head.title戻りNone、その後のstringルックアップで例外がスローされることです。私はチェーンを次のように分割することができます:

しかし、これは私の目には冗長で読みにくいものです。

私は書くことができます:

しかし、それは冗長で非効率的です。

考えられる場合の1つの解決策は、可能だと思いますが、属性ルックアップに対してnil返されるオブジェクト(それを呼び出す)を作成することです。Noneこれは私が書くことを可能にするでしょう:

しかし、これはかなり醜いです。もっと良い方法はありますか?

0 投票する
1 に答える
123 参照

swift - Apple による Swift プログラミングからのコードの書き込み中に予期しないエラーが発生しました (オプションの連鎖)

Apple の Swift Programming Language と同じ次のコードを書きましたが、次のような予期しないエラーが発生しました: type'()' does not conform to protocol 'boolean type' , その場所は次のコードに示されています:

0 投票する
3 に答える
3718 参照

swift - Swift のオプションの連鎖は常に if let 構造で行われますか、それともオプションで疑問符を使用して行われるだけですか?

Apple docs によると、オプションのチェーンは次のとおりです。

オプションが非 nil の場合、プロパティ、メソッド、または添え字を呼び出したいオプション値の後に疑問符 (?) を置くことによって、オプションの連鎖を指定します。...オプションがnilの場合、オプションのチェーンは正常に失敗します...

これについての私の解釈は、次のような構造はオプションの連鎖であるということです:

someMasterObject.possiblyNilHandler?.handleTheSituation()

...そして、上記の行は、ハンドラーが nil でない場合は handleTheSituation メソッドを呼び出し、ハンドラーが nil の場合は正常に失敗します (行はスキップされます)。

ただし、オプションの連鎖について私が目にするほとんどすべての例は、次のように「if let」構造を使用しています。

実際、私がネット上で見つけたドキュメントと例では、オプションのチェーンに関連して「if let」構造を多用しているため、それがオプションのチェーンであるかのように見えます。

しかし、私の最初の例はオプションの連鎖のサポートされた使用であり、if let 構造はオプションの連鎖を使用する (または密接に結びついている) 別の構造であると仮定するのは正しいでしょうか?

0 投票する
2 に答える
417 参照

ios - Swiftでナビゲーションコントローラーを参照するには?

UINavigationControllerオブジェクトを作成し、ウィンドウのrootViewControllerプロパティとして設定しました。オブジェクトのrootViewControllerUINavigationControllerと呼ばれるクラスUINavigationMenuViewControllerです。UINavigationMenuViewControllerたとえば、からに移動したい場合はUIUserProfileViewController、次を使用できます。

としても

効果は同じようです。私は違いが何であるか疑問に思っています。2 番目の方法の方が安全だと思います。UINavigationMenuViewControllerオブジェクトを に埋め込むのを忘れた場合でもUINavigationController、最初の方法と比較して、アプリはクラッシュしません。これはオプショナル チェーンとも呼ばれていると思いますが、まだ Swift を学んでいるのでよくわかりません。

アドバイスをお願いします。

0 投票する
1 に答える
238 参照

swift - コンストラクター呼び出しのオプションのチェーン?

NSNumber?オプションで anを anにキャストしたいのですInt?が、のイニシャライザ メソッドはIntのみを取るinit(NSNumber)ため、 an を渡すことはできませんNSNumber?

オプションの連鎖のようなものを使用するように、このコードを圧縮する方法はありますか?