私はUnityScriptコードを書いています。プログラムのある時点で、 switch
ブロック。これは私のコードの要約版です:
function Move(target: int) {
var targetTransform : Transform;
switch (target) {
case 0:
// do something including assigning targetTransform
break;
case 1:
// do something including actually moving my object
return; // since I moved already, I want the function to terminate here
default:
// do something including assigning targetTransform
}
object.Move(targetTransform); // object is locally available
}
今、何らかの理由で、コンパイラは私に与えます
Assets/Scripts/GameMaster.js(490,9): BCW0015: WARNING: Unreachable code detected.
行は、 switch
.
私の以前の研究から、私は多くの同様の問題を発見しましたが、それらのすべては、例えば break
の後のステートメント return
sまたはa return
終わりに case
return
ある時点で編集。ここではそうではありません。 case
s関数から完全に戻るため、他は break
の外へ switch
そしてそこから続けます。
この警告を取り除く方法はありますか?そもそも何が原因ですか、これは単なるバグですか?
可能な限り、私は使用しないことを好む boolean
後にそれを確認してください switch
ブロック...これは、単に1つを終了するだけの行き過ぎのようです case
早く。
回答:
回答№1は4このバグは少なくとも 2010。 「」を使用することは完全に合法です return
代わりのステートメント break
、コンパイラは到達不能コードについて文句を言います。
基本的に2つのオプションがあります
- 警告を無視し、コードをきれいに保つ
- 交換して警告を回避します
return
とともにboolean
+break
そして、boolean
後にswitch
ブロック
私の知る限り、あなたは「できない」 無効にする または 抑制する 警告。 C#では可能ですが、UnityScriptにはこの機能が欠けているようです。そのため、3番目の解決策が得られます。コードをC#に変換します:-)