가정하자이 같은 시퀀스를 반환하는 함수 (remove-bad-nodes g)
있어요.당신은 어떻게 REPL에서 철회 할 수 있습니까?</p> <pre><code>[updated-g bad-nodes] </code></pre> <code>updated-g</code> 제거 그 나쁜 노드 그래프이다 <p>하고 <code>bad-nodes</code>이 제거 된 노드를 포함하는 모음입니다 :
(let [[g bads] (remove-bad-nodes g)]
...)
을하지만 로컬 변수를 정의 :
함수에 또는 let
내부 인수로,이처럼 destructure 수 있습니다. REPL에서 어떻게 할 수 있습니까? 앞으로의 명령에서 업데이트 된 그래프는 g
이고 제거 된 노드는 bads
으로 참조 할 수 있습니까?
(def [g bads] (remove-bad-nodes g)
하지만 def
는 기호로 첫 번째 인자를 필요로하기 때문에 즉, 작동하지 않습니다 마음에 오는 첫번째 것은 이것이다.
def
에 let
과 같은 구문이없는 이유는 묻지 않습니다. 그것에 대해 이미 a question이 있습니다. REPL에서 "다중 값"을 반환하는 함수를 사용하여 편리하고 실용적인 방법이 무엇인지 궁금합니다. 왜 정상적인 Clojure 연습에서 REPL에서 분해 할 필요가없는 몇 가지 이유가 있다면, 당신이 다른 것을 대신해서 유용한 답을 만들 수 있다고 설명하기 때문입니다. 요즘 내가 이걸 많이 봤어. 그래서 내가 묻는거야. 일반적으로 항상 그런 것은 아니지만,이 함수는 다른 정보와 함께 업데이트 된 버전을 반환합니다. 부작용 코드에서이 함수는 객체를 수정하고 하나의 값 (이 예에서 제거 된 노드) 만 반환하지만 분명히 그렇게하는 것은 Clojurely가 아닙니다.
링크 된 질문에 대한 대답은 다음과 같습니다. "원한다면 당신을 위해 매크로를 작성할 수 있습니다 (예 : def +)." – amalloy
@ amalloy이 질문을 다시 기꺼이 열어 주시겠습니까? [링크 된 질문에 대한 귀하의 답변] (https://stackoverflow.com/a/8198215/1393162)이 나에게 유용한 아이디어를 주었기 때문에 ('def +'매크로 작성), 매우 중요하지 않습니다. 그러나 여기 왜 생각합니까? 이 질문은 별도로 답변해야합니다 : (1) 그것은 정말로 다른 무엇인가에 관한 것입니다 : REPL에서 파괴되는 _how_. (2) 다른 해답은 접미어 적으로 _a_ solution을 언급하며 반드시 유일한 것은 아닙니다. 어쩌면'def +'매크로가 없어도 사용할 수있는 다른 접근법이있을 수 있습니다. 나는 매크로를 총체라고 부르는 좋은 이유가 있다고 생각한다! –
당신은 이미이 질문에 대한 답을 얻었으므로 REPL에 대해 "파괴"라고 부를 수있는 다양한 것들을 보여주었습니다. 사실 REPL에 대한 특별한 것은 아무것도 없었습니다. 'def'는 행동합니다. 이 질문을 다시 열어야 할 이유는 없지만 범위를 개선하기 위해 자유롭게 편집 할 수 있습니다. – amalloy