2011-04-04 52 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