只是通過source for renderscript期待。 我想我發現了一個錯誤,上線36可能在android系統的renderScript源輕微錯誤
private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV;
認爲,需要有一個雙==但沒有足夠的編碼經驗是肯定的。
只是通過source for renderscript期待。 我想我發現了一個錯誤,上線36可能在android系統的renderScript源輕微錯誤
private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV;
認爲,需要有一個雙==但沒有足夠的編碼經驗是肯定的。
不,我不認爲這是一個錯誤。它取決於DEBUG
值的設置LOG_ENABLED
要麼LOGD
或LOGV
。
相關位是:
public class RenderScript {
static final String LOG_TAG = "libRS_jni";
private static final boolean DEBUG = false;
@SuppressWarnings({"UnusedDeclaration", "deprecation"})
private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV;
和最後一行是概念等同於:
private static final boolean LOG_ENABLED;
if (DEBUG)
LOG_ENABLED = Config.LOGD;
else
LOG_ENABLED = Config.LOGV;
事實上,
private static final boolean LOG_ENABLED == DEBUG ? Config.LOGD : Config.LOGV;
實際上並沒有什麼意義因爲這意味着:
private static final boolean ((LOG_ENABLED == DEBUG)
? Config.LOGD
: Config.LOGV);
它根本沒有聲明變量名,只是一個應該分配給某個值的值。
這混亂的關於在Java中如何ternary operators工作只是一個簡單的位。你正在做的事情,如:
int i;
boolean b;
int n1=2;
int n2=3;
i = b ? n1 : n2;
其中B可爲真或假的表達式。我曾經在第一個元素周圍使用圓括號來表示這一點,儘管我只是翻閱了一些代碼,而現在我似乎已經停止了這樣做!
它不只是在Java中。大多數語言對於三元運算符都有相同的語法。參考:http://en.wikipedia.org/wiki/%3F: – codetwiddler 2012-10-15 14:36:29