2011-10-27 100 views
1

有人可以幫我翻譯下面的咖啡腳本?翻譯JavaScript功能咖啡腳本

Step(
    function readSelf() { 
    fs.readFile(__filename, this); 
    }, 
    function capitalize(err, text) { 
    if (err) throw err; 
    return text.toUpperCase(); 
    }, 
    function showIt(err, newText) { 
    if (err) throw err; 
    console.log(newText); 
    } 
); 

回答

3

CoffeeScript相當於以下內容。

Step (readSelf = -> 
    fs.readFile __filename, @ 
), (capitalize = (err, text) -> 
    throw err if err? 
    text.toUpperCase() 
), showIt = (err, newText) -> 
    throw err if err? 
    console.log newText 

您可以使用此網站爲此http://js2coffee.org/或者你可以下載並安裝https://github.com/rstacruz/js2coffee的代碼,並使用你的機器上。

+0

我會用'@'替換'this',只是因爲它更多的CoffeeScript-y。另外,你可能想要那些'如果'的存在 - '如果錯誤'。我知道這個翻譯成略有不同的JavaScript,但它更可能意味着什麼。 –

+0

@Aaron'if err'沒有錯。 'err'將會是'undefined' /'null',或者它會是一個對象,所以布爾強制不會添加任何歧義。或者你的意思是「如果錯誤」作爲審美偏好,這是合法的。 –

+0

@Trevor不知道'err'可能會發生什麼值,它的相同部分的可讀性(因爲你真正在做的是檢查是否存在)和正確性(我已經看到,在罕見和有些可怕的情況下,一個空字符串)。 –

0
Step(
    readSelf = -> fs.readFile __filename, @ 
    capitalize = (err, text) -> 
    throw err if err 
    text.toUpperCase() 
    showIt = (err, newText) -> 
    throw err if err 
    console.log newText 
) 

不要使用轉換器。轉換後您的代碼可能會損壞。例如,您可以在前一篇文章中看到的代碼不正確。由於表達

throw err if err? 

會生成:

if (typeof err !== "undefined" && err !== null) { 
    throw err; 
} 

我認爲這不是您所期望看到的。 我使用site of coffee creator進行咖啡實驗。 不要使用js2coffee網站,轉換過程中會出現一些可能非常關鍵的錯誤。我有.. 祝你好運!