내가 foo.js을 실행하기 위해 기본적으로 (m
을 확장하기위한 것입니다 m
라는 매크로를 정의하는 sweet.js 매크로가이sweet.js 매크로`m`을`m` 심볼로 확장 할 수 있습니까?
//foo.js
m("foo")
처럼 호출되는 곳 m
라는 기능이있어 가정 컴파일 시간) I 매크로와는 달리, 기능은 일류 시민으로 주위에 전달 될 수 있기 때문에, m
을 확장하지 할 경우에
의 기능
doSomething(m) //don't want to expand this as a macro
매크로에서이 시나리오를 다루는 케이스가 없다면 sweet.js가 불평하므로 동일한 심볼로 확장되는 포괄 규칙을 가져야합니다.
macro m {
//simplification to demonstrate a case that recursively expand macro
case { _ ($foo, $bar) } => { return #{m($foo)} }
//does syntax unwrapping in real case
case { _ ($foo) } => { return #{$foo} }
//**this tries to recursively expand `m`, which is not what I want**
case { _ } => { return #{m} }
}
은 어떻게 m
매크로 매크로 다른 경우가 반복적으로 매크로로 m
을 확장 할 필요가 않음을 감안할 때 m
기능으로 확장해야합니까?
사례 규칙 중 일부를 매크로로 확장해야하는 경우 (첫 번째 경우와 마찬가지로) – LeoHorie
아, 죄송합니다. 질문을 너무 빨리 읽습니다. 잘하면 당신을위한 더 나은 솔루션입니다 편집. – timdisney
아하, 완벽한 솔루션! 감사! – LeoHorie