目次
質問内容
回避策
報酬資料
ホームページ バックエンド開発 Golang 条件付き for ループに return ステートメントがありません

条件付き for ループに return ステートメントがありません

Feb 09, 2024 pm 12:30 PM
コンパイルエラー

带条件的 for 循环中缺少 return 语句

PHP では、for ループは、コードの一部を繰り返し実行するために使用される一般的な反復構造です。ただし、場合によっては、条件付き for ループに return ステートメントを追加し忘れることがあり、その場合、プログラムが正常に結果を返せなくなります。この場合、PHP エディターの Yuzai は、予期しないエラーを避けるために適切な return ステートメントがループに追加されていることを確認するためにコードを適時にチェックすることをお勧めします。これにより、コードの信頼性と正確性が保証され、プログラムの効率と保守性が向上します。

質問内容

次のコードを書くと、コンパイラが missing return states エラーを生成することに気付きました。:

リーリー

これは、次のコードがエラーなしでコンパイルされた場合です:

リーリー

最初のコードは、メソッドが返らないということはあり得ないので、論理的および技術的には問題ありません。コンパイラがこのエラーを表示する理由はありますか?それとも、何らかの欠落したロジックまたはバグでしょうか?

回避策

@Cerise Limónのコメントを回答に拡張すると、「最初のコードは...技術的に問題ありません」という主張は誤りです。

Go 言語仕様には次のように書かれています:

そしてこれ:

(強調は私が追加しました)

最初の関数のコードを調べると、仕様の次の条件が満たされていないことがわかります。

リーリー

関数には結果パラメータ (int 戻り値) があるため、終了ステートメントで終了する必要がありますが、関数の最後のステートメントは for ステートメント 条件 を伴う、つまり は、仕様で定義されている「終了ステートメント」ではありません。

これは奇妙に思えるかもしれませんが、実際には技術的には正しいです。

報酬資料

では、なぜ 2 番目の関数には問題がないのでしょうか?

リーリー

この例では、関数の最後のステートメントは for です。ここで、 は無条件です。 および は、関数の Break ステートメントを参照しません。 for ループ。これは終了文の言語仕様定義を満たします。

作品にはロジックがあります。

無条件の for ステートメントに break が含まれている場合、ループ が終了する可能性があるため、関数には return ステートメントが必要です。

無条件の

for ステートメント break が含まれていない (そして return ステートメントがない) 場合、ループは実行されません。終了 (少なくとも通常の実行パスの結果としてではなく) 関数の戻り値が必要です)。 また、

break

ステートメントが到達可能かどうかを判断するための制御フロー分析はなく、 ステートメントが存在する必要があるだけであることにも注意してください。たとえば、次のコードでは、break に明らかにアクセスできない場合でも、「戻り値がありません」コンパイル エラーが発生します。 リーリー

以上が条件付き for ループに return ステートメントがありませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C++関数継承の詳しい解説:継承で「基底クラスポインタ」と「派生クラスポインタ」を使うには? C++関数継承の詳しい解説:継承で「基底クラスポインタ」と「派生クラスポインタ」を使うには? May 01, 2024 pm 10:27 PM

関数の継承では、「基底クラス ポインター」と「派生クラス ポインター」を使用して継承メカニズムを理解します。基底クラス ポインターが派生クラス オブジェクトを指す場合、上方変換が実行され、基底クラスのメンバーのみにアクセスされます。派生クラス ポインターが基本クラス オブジェクトを指す場合、下向きキャストが実行される (安全ではない) ため、注意して使用する必要があります。

notepad++でC言語を実行する方法 notepad++でC言語を実行する方法 Apr 08, 2024 am 10:06 AM

Notepad++ 自体は C 言語プログラムを実行できず、コードをコンパイルして実行するには外部コンパイラが必要です。外部コンパイラを使用するには、次の手順に従ってセットアップします: 1. C 言語コンパイラをダウンロードしてインストールします; 2. Notepad++ でカスタム ツールを作成し、コンパイラの実行可能ファイルのパスとパラメータを構成します; 3. C 言語プログラムを選択し、.c ファイル拡張子を付けて保存します。 4. C 言語プログラム ファイルを選択し、[実行] メニューからコンパイルするカスタム ツールを選択します。 5. コンパイル結果を表示し、コンパイル エラーまたは成功メッセージを出力します。 。コンパイルが成功すると、実行可能ファイルが生成されます。

Sublime で Python コードを実行するときに押すキー Sublime で Python コードを実行するときに押すキー Apr 03, 2024 pm 03:54 PM

Sublime Text で Python コードを実行するためのショートカット キーは次のとおりです。 Windows および Linux: Ctrl + BMac: Cmd + B コード内にカーソルを置きます。ショートカットキーを押します。コードは、システムのデフォルトの Python インタープリタを使用して実行されます。

Javaでのvalの意味は何ですか Javaでのvalの意味は何ですか Apr 25, 2024 pm 10:06 PM

Java の val キーワードは、不変のローカル変数を宣言するために使用されます。つまり、その値は一度割り当てられると変更できません。特徴は次のとおりです。 不変性: val 変数は、一度初期化されると再割り当てできません。ローカル スコープ: val 変数は、宣言されているコード ブロック内でのみ表示されます。型推論: Java コンパイラーは、割り当てられた式に基づいて val 変数の型を推論します。ローカル変数のみ: val は、クラス フィールドやメソッド パラメーターではなく、ローカル変数を宣言するためにのみ使用できます。

C++ における const と static の違い C++ における const と static の違い May 01, 2024 am 10:54 AM

const 修飾子は定数を示し、値は変更できません。static 修飾子は変数の有効期間とスコープを示します。 const によって変更されたデータ メンバーは、初期化後に変更できません。static によって変更された変数は、プログラムの開始時に初期化され、プログラムの終了時に破棄されます。アクティブなオブジェクトがなくても存在し、関数間でアクセスできます。 const で変更されたローカル変数は宣言時に初期化する必要がありますが、static で変更されたローカル変数は後で初期化できます。 const 修飾されたクラス メンバー変数はコンストラクターまたは初期化リストで初期化する必要がありますが、静的修飾されたクラス メンバー変数はクラスの外部で初期化できます。

Java で = は何を意味しますか Java で = は何を意味しますか Apr 26, 2024 pm 11:30 PM

Java プログラミング言語の「=」演算子は、変数に値を代入し、式の右側の値を左側の変数に格納するために使用されます。使用法: 変数 = 式。ここで、変数は割り当てを受け取る変数の名前であり、式は値を計算または返すコード セグメントです。

Java の関数オーバーロード メカニズムにおいて、コンパイラはスタイルは同じで型が異なるパラメータをどのように区別するのでしょうか? Java の関数オーバーロード メカニズムにおいて、コンパイラはスタイルは同じで型が異なるパラメータをどのように区別するのでしょうか? Apr 25, 2024 am 10:03 AM

コンパイラがオーバーロードされた関数を区別する方法: 各関数の引数の型であるシグネチャによって区別されます。関数名とパラメータの数が同じであっても、パラメータの型が異なれば、コンパイラは違いを認識できます。

C++でmin関数を使用する方法 C++でmin関数を使用する方法 May 06, 2024 pm 05:18 PM

C++ の min() 関数は、2 つ以上の値の最小値を返します。異なる型の値を比較できる汎用関数です。使用方法は次のとおりです。 2 つの値を比較: min(a, b) 複数の値を比較: min(a, b, c) 異なる型の値を比較: min(a, b, c) (型を明示的に指定する必要があります) ) 配列およびコンテナ内の要素の比較に適用可能

See all articles