2011-04-04 5 views
3

J'ai une fonction qui retourne un hachage, étant donné certains paramètres:Construire un hachage dans une fonction

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

Certains de ces paramètres, comme bcc et replyto sont facultatifs. Si l'appelant fournit des valeurs nulles pour eux, ils ne doivent pas être présents dans le hachage que je retourne. C'est-à-dire que "Bcc": bcc ne doit être présent dans le hachage que si l'argument bcc est non nul.

Voici ma première tentative, mais l'analyseur ne l'aime pas (cela va juste avant la ligne message.encode() de la fonction):

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

utilise le fonctionnement put() autorisé sur une variable dans une fonction comme ça? Si oui, est-ce que quelque chose ne va pas avec ma syntaxe?

Répondre

2

Vous pouvez utiliser .put() dans une fonction, mais n'oubliez pas qu'elle renvoie un nouveau hachage et laisse l'original non modifié.

Essayez de terminer votre méthode comme ceci:

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

Puis-je les enchaîner? Par exemple: 'newmessage = message.put (premier_hash) .put (second_hash) .put (third_hash);' –

+0

oui, le chaînage fonctionne. rappelez-vous que vous pouvez aussi mettre une expression qui résout en un hachage au lieu d'un hachage lui-même: newmessage = message.put (bcc => {"Bcc": bcc} | {}); – TelegramSam

Questions connexes