0

誰かが次のコードの疑問符を説明できますか? また、INITIAL_PERMANCE はコード内の静的な最終定数ですが、シナタックスの最後の行は何と呼ばれていますか?

Synapse(AbstractCell inputSource, float permanence) {
    _inputSource = inputSource;
    _permanence = permanence==0.0 ? 
        INITIAL_PERMANENCE : (float)Math.min(1.0,permanence);
}
4

5 に答える 5

9

?および:は、Java条件演算子の一部です。三項演算子は、Javaで3つの引数をとる唯一の演算子であるため、三項演算子と呼ばれることもあります。

これは本質的にインラインIF/THEN/ELSEブロックです。

_permanence = permanence==0.0 ? 
    INITIAL_PERMANENCE : (float)Math.min(1.0,permanence);

次のように書き直すことができます。

if (permanence == 0.0)
    _permanence = INITIAL_PERMANENCE;
else
    _permanence = (float) Math.min(1.0,permanence);

条件演算子の一般的な形式は次のとおりです。

<Test returning a boolean> ? <value for if test is true> : <value for if test is false>
于 2012-09-15T02:27:53.277 に答える
0

これは、インライン化されたifelseステートメントと同じです。

   _permanence = 
    {// A kind of anonymous routine for assignment
      if(permanence==0.0)
      { INITIAL_PERMANENCE } 
      else
      { (float)Math.min(1.0,permanence)}
    }

三項演算子についての良い説明はオラクルサイトにあります

于 2012-09-15T02:25:30.660 に答える
0

これは三項演算子です。 これは、if-elseステートメントのように機能します。

分解すると、ステートメントは次のようになります。

if(permanence == 0.0) { 
    _permanence = INITIAL_PERMANENCE;
} else {
    _permanence = (float)Math.min(1.0,permanence);
}

その使用は、意味が非常に明確な状況で制限されます。三項演算子は混乱する可能性があるため、慎重に使用してください。

最後のステートメント:

(float)Math.min(1.0, permanence)

型キャストと呼ばれます。Math.min()doubleを返すの結果をfloatの結果にキャストしています。それを行うことの価値を理解するには、浮動小数点数が何であるかについてもっと読む必要があります。

于 2012-09-15T02:25:38.757 に答える
0

これは(Hovercraftが言ったように)Javaの三項演算子と呼ばれ、次のように使用されます。

type variableName = (statement) ? value if statement is true: value if false;
于 2012-09-15T02:28:13.407 に答える
0

これは、最も一般的な使用方法です。
[オプションの変数]=(ブールテスト)?(Trueの場合はこれを実行します):( falseの場合はこれを実行します)

于 2012-09-15T02:28:56.167 に答える