2011-10-08 48 views
0

我不知道如何「S」正在使用中「(+ S [1])」。什麼是'+'?我也不明白||的用法這樣的符號,它在做什麼?如何翻譯下面的JavaScript以C#?

var draw = function(s){ 
... 
if (+s[i]) a = (a+90)%360||360; // Right 
else a = (a-90||360); // Left 

在下面的代碼中我不明白'while(n--)'是什麼?

var getS = function(n){ 
    var s = ''; 
    while (n--) s += getNext(0); 
    return s; 
}; 

如果你想看看這個代碼在上下文中去http://fractal.qfox.nl/,按F12,以獲得開發工具並尋找在腳本dragon.js。如果您喜歡這個挑戰,請感覺完全免費向C#發佈完整的翻譯。

回答

6

把+在表達的前脅迫它變成一個數,例如來自一個字符串。

的||如果運算符可以轉換爲真,則其左側的值爲其它值,否則爲右側。等等|| B,則意味着「使用,如果它不爲空,假,零或空字符串,否則使用B」。

而且n--將布爾值false當n爲零。

2

if (+s[i])正在檢查如果s [I]存在,並且是一個數字!= 0。在C#這將是相同

int n; 
if (int.TryParse(s[i], out n) && n != 0) { } 

a = (a-90||360);基本上是說如果萊夫特賽德的||爲空,未定義,假或零,然後採取權利。在C#中它會看起來像

a = (a-90 > 0)? a-90 : 360; 

a必須事先到該行聲明。


while (n--){ }不斷重演直到n爲0 n必須先於運行代碼雖然如var n = 10;聲明。在C#中,它將是

int n = 10; 
while (n >= 0) 
{ 
    n--; 
} 
+0

「if(+ s [i])正在檢查s [i]是否存在並且是一個數字」。並非如此。如果'[i]'爲零,則它是一個數字,但它會因爲零轉換爲假而失敗。您的C#版本也會正確將零視爲一個數字。 –

+0

我修改了代碼。感謝指針。 – Christian