ये रहा:
my_assert = (test) ->
str = my_assert.caller.toString()
match = /return my_assert\((.*)\)/.exec str
console.log match[1], test
a = '1'
b = '2'
do -> my_assert(a!=b)
do -> my_assert(b!=a)
> a !== b true
> b !== a true
http://jsfiddle.net/m7qRN/
केवल चेतावनी आप क्रम में अलग अनाम प्रक्रियाएं से अपने my_assert
कॉल कॉल करनी होगी मज़बूती से जोर कॉल के स्रोत कोड प्राप्त करने में सक्षम होना करने के लिए है ।
कॉफीस्क्रिप्ट में do ->
नोटेशन का उपयोग करके इतना बुरा नहीं है।
जेएस में यह है: (function(){my_assert(a!=b)})();
।
तुम इतनी तरह एक समारोह के रूप में परीक्षण पास कर सकता है:
my_assert -> a!=b
my_assert(function(){a!=b});
कारण है कि जब यह वास्तव में प्रश्न पूछा समाधान नहीं करता है क्या यह उत्तर 3 वोट प्राप्त करता है और बदले में बताते हैं एक प्रश्न में एक वाक्यविन्यास त्रुटि जिसमें इतना अधिक वाक्यविन्यास नहीं है? अनुमोदित, यह एक उपयोगी संकेत है, लेकिन मैं यह देखने में असफल रहा कि "सर्वोत्तम" उत्तर के रूप में मतदान करने के लायक कैसे है क्योंकि यह वास्तव में बिल्कुल नहीं है। –
@ जीनियाएस। ... यह सीधे ओपी की चिंताओं को संबोधित करता है ... वे वैल्यू ए और बी के भीतर से मूल्य प्राप्त करना चाहते थे, पास मूल्य में नहीं। प्रश्न पढ़ने में सूक्ष्म परिवर्तन .... – Rondo