2011-04-04 76 views
3

內的哈希我已經給它返回一個散列函數,某些參數:構建功能

build_message = function(from, to, bcc, subject, tag, htmlbody, textbody, replyto) { 
    message = {"From": from, 
     "To": to, 
     "Subject": subject, 
     "HtmlBody": htmlbody, 
     "TextBody": textbody}; 
    message.encode(); 
} 

一些參數,如bccreplyto都是可選的。如果調用者爲它們提供空值,則它們不能出現在我返回的散列中。也就是說,如果bcc參數非空,則"Bcc": bcc只能出現在哈希中。

這是我第一次嘗試,但是解析器不喜歡它(這那張message.encode()線功能的前右):

bcc_body = bcc => {"Bcc": bcc} | {}; 
message.put(bcc_body); 

是允許使用的變量的函數內部put()操作喜歡這個?如果是這樣,我的語法有問題嗎?

回答

2

您可以在函數內部使用.put(),但請記住它會返回一個新的散列並且保留原始的未修改。

嘗試結束你的方法是這樣的:

bcc_body = bcc => {"Bcc": bcc} | {}; 
newmessage = message.put(bcc_body); 
newmessage.encode(); 
+1

我可以鏈接它們嗎?例如:'newmessage = message.put(first_hash).put(second_hash).put(third_hash);' – 2011-04-05 02:59:06

+0

是的,鏈接工程。請記住,您也可以將表達式解析爲散列而不是散列本身:newmessage = message.put(bcc => {「Bcc」:bcc} | {}); – TelegramSam 2011-04-05 22:47:56