Aquí van:
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/
La única advertencia es que hay que llamar a sus my_assert
llamadas de funciones anónimas separadas con el fin de ser capaz de obtener con fiabilidad el código fuente de la llamada aseveración .
En CoffeeScript no es tan malo usar la notación do ->
.
En JS esto es: (function(){my_assert(a!=b)})();
.
Se podía pasar en la prueba como una función de este modo:
my_assert -> a!=b
my_assert(function(){a!=b});
¿por qué esta respuesta Recibe 3 votos cuando en realidad no aborda la cuestión planteada y, en cambio, señala un error de sintaxis en una pregunta que ni siquiera tiene tanta sintaxis? De acuerdo, es una pista útil, pero no veo cómo vale la pena votar como la "mejor" respuesta, ya que no es en absoluto una. –
@GeniaS. ... aborda directamente las preocupaciones del OP ... querían obtener los valores dentro de var's a y b, no el valor pasado. Cambio sutil en la lectura de la pregunta ... – Rondo