중첩 된 다중 값 바인딩을 형식화하는 방법은 무엇입니까?

도미닉 모 크리스

최근에는 여러 값을 반환하는 여러 함수를 중첩하는 경우가 많습니다. 그러나 let이러한 호출을 하나의 큰 문장으로 우아하게 작성할 수있는 ,와는 달리 항상 많은 들여 쓰기로 끝납니다.

질문 은 다음과 같습니다.

(defun return-1-and-2 ()
  (values 1 2))

(defun return-3-and-4 ()
  (values 3 4))

다음과 같은 것을 달성 할 수 있습니까?

(multiple-value-bind (one two)
    (return-1-and-2)
  (multiple-value-bind (three four)
      (return-3-and-4)
    (list one two three four)))

하지만 더 간결을 쓰기 let같은 웨이, 즉, 뭔가를

(multiple-let (((one two) (return-1-and-2))
               ((three four) (return-3-and-4)))
  (list one two three four))

?

Rainer Joswig

아마도 라이브러리에 유사한 구조가있을 것입니다.

참고 그것은 더 비슷하다고 let*하지, let범위가 중첩되어 있기 때문에.

매크로를 작성할 수 있습니다. 예를 들면 :

(defmacro multiple-value-let* ((&rest bindings) &body body)

  "Sets the scope for several ((var-0 ... var-n) form)
  binding clauses, using the multiple return values of the form."

  (if (null bindings)
      `(progn ,@body)
    (destructuring-bind (((&rest vars) form) &rest rest-bindings)
        bindings
      `(multiple-value-bind ,vars
           ,form
         (multiple-value-let* ,rest-bindings
           ,@body)))))

예:

CL-USER 33 > (walker:walk-form
              '(multiple-value-let* (((one two)    (return-1-and-2))
                                     ((three four) (return-3-and-4)))
                 (list one two three four)))
(MULTIPLE-VALUE-BIND (ONE TWO)
    (RETURN-1-AND-2)
  (MULTIPLE-VALUE-BIND (THREE FOUR)
      (RETURN-3-AND-4)
    (PROGN (LIST ONE TWO THREE FOUR))))

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

중첩 된 원격 세션에서 Byobu 키 바인딩을 사용하는 방법은 무엇입니까?

분류에서Dev

Ruby 중첩 된 해시의 값을 확인하는 방법은 무엇입니까?

분류에서Dev

중첩 된 값을 기반으로 쌍을 병합하는 방법은 무엇입니까?

분류에서Dev

XML 역 직렬화 중에 잘못된 열거 형 값을 무시하는 방법은 무엇입니까?

분류에서Dev

중첩 된 스키마에서만 속성 값을 구문 분석하는 방법은 무엇입니까?

분류에서Dev

다중 인덱싱 된 DataFrame을 중첩 된 사전 구조로 가져 오는 방법은 무엇입니까?

분류에서Dev

PostgreSQL의 중첩 된 xml 개체에서 값을 추출하는 방법은 무엇입니까?

분류에서Dev

jquery를 사용하여 중첩 된 JSON 개체에서 값을 가져 오는 방법은 무엇입니까?

분류에서Dev

중첩 된 사전에서 쉼표로 구분 된 값을 만드는 방법은 무엇입니까?

분류에서Dev

두 목록에 중첩 된 사전에서 값을 가져 오는 방법은 무엇입니까?

분류에서Dev

경로를 알 수없는 중첩 된 개체의 값을 얻는 방법은 무엇입니까?

분류에서Dev

중첩 된 Enum을 포함하여 Enum의 모든 값을 반복하는 방법은 무엇입니까?

분류에서Dev

RavenDB : MultiMapIndex에서 중첩 된 값을 올바르게 쿼리 / 필터링하는 방법은 무엇입니까?

분류에서Dev

지도 내에서 중첩 된 값을 병합하는 적절한 방법은 무엇입니까?

분류에서Dev

SpringData Mongo-중첩 된 값에 대해 중첩 된 고유 배열을 얻는 방법은 무엇입니까?

분류에서Dev

중첩 된 딕셔너리에 동적으로 값을 추가하는 방법은 무엇입니까?

분류에서Dev

Apex를 사용하여 중첩 된 JSON에서 값을 읽는 방법은 무엇입니까?

분류에서Dev

중첩 된 JSON에서 값을 추출하고 계산하는 방법은 무엇입니까?

분류에서Dev

임의의 깊이로 깊이 중첩 된 Hashtable에서 값을 검색하는 방법은 무엇입니까?

분류에서Dev

중첩 된 배열 값을 기준으로 값을 필터링하는 방법은 무엇입니까?

분류에서Dev

Terraform : 목록 내 중첩 된 맵 목록에서 값을 선택하는 방법은 무엇입니까?

분류에서Dev

중첩 된 원격 세션에서 Byobu 키 바인딩을 사용하는 방법은 무엇입니까?

분류에서Dev

두 개의 중첩 된 jquery 메서드에서 값을 반환하는 방법은 무엇입니까?

분류에서Dev

자바 스크립트로 중첩 된 모델에 값을 전달하는 방법은 무엇입니까?

분류에서Dev

중첩 된 DataGrid에서 ContextMenu 항목을 바인딩하는 방법은 무엇입니까?

분류에서Dev

중첩 선택에서 중첩 된 두 값을 얻는 방법은 무엇입니까? mysql

분류에서Dev

중첩 된 lapply / sapply 함수 내에 값을 추가하는 방법은 무엇입니까?

분류에서Dev

경로없이 중첩 된 문서의 값을 쿼리하는 방법은 무엇입니까?

분류에서Dev

중첩 된 JSON을 직렬화하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    중첩 된 원격 세션에서 Byobu 키 바인딩을 사용하는 방법은 무엇입니까?

  2. 2

    Ruby 중첩 된 해시의 값을 확인하는 방법은 무엇입니까?

  3. 3

    중첩 된 값을 기반으로 쌍을 병합하는 방법은 무엇입니까?

  4. 4

    XML 역 직렬화 중에 잘못된 열거 형 값을 무시하는 방법은 무엇입니까?

  5. 5

    중첩 된 스키마에서만 속성 값을 구문 분석하는 방법은 무엇입니까?

  6. 6

    다중 인덱싱 된 DataFrame을 중첩 된 사전 구조로 가져 오는 방법은 무엇입니까?

  7. 7

    PostgreSQL의 중첩 된 xml 개체에서 값을 추출하는 방법은 무엇입니까?

  8. 8

    jquery를 사용하여 중첩 된 JSON 개체에서 값을 가져 오는 방법은 무엇입니까?

  9. 9

    중첩 된 사전에서 쉼표로 구분 된 값을 만드는 방법은 무엇입니까?

  10. 10

    두 목록에 중첩 된 사전에서 값을 가져 오는 방법은 무엇입니까?

  11. 11

    경로를 알 수없는 중첩 된 개체의 값을 얻는 방법은 무엇입니까?

  12. 12

    중첩 된 Enum을 포함하여 Enum의 모든 값을 반복하는 방법은 무엇입니까?

  13. 13

    RavenDB : MultiMapIndex에서 중첩 된 값을 올바르게 쿼리 / 필터링하는 방법은 무엇입니까?

  14. 14

    지도 내에서 중첩 된 값을 병합하는 적절한 방법은 무엇입니까?

  15. 15

    SpringData Mongo-중첩 된 값에 대해 중첩 된 고유 배열을 얻는 방법은 무엇입니까?

  16. 16

    중첩 된 딕셔너리에 동적으로 값을 추가하는 방법은 무엇입니까?

  17. 17

    Apex를 사용하여 중첩 된 JSON에서 값을 읽는 방법은 무엇입니까?

  18. 18

    중첩 된 JSON에서 값을 추출하고 계산하는 방법은 무엇입니까?

  19. 19

    임의의 깊이로 깊이 중첩 된 Hashtable에서 값을 검색하는 방법은 무엇입니까?

  20. 20

    중첩 된 배열 값을 기준으로 값을 필터링하는 방법은 무엇입니까?

  21. 21

    Terraform : 목록 내 중첩 된 맵 목록에서 값을 선택하는 방법은 무엇입니까?

  22. 22

    중첩 된 원격 세션에서 Byobu 키 바인딩을 사용하는 방법은 무엇입니까?

  23. 23

    두 개의 중첩 된 jquery 메서드에서 값을 반환하는 방법은 무엇입니까?

  24. 24

    자바 스크립트로 중첩 된 모델에 값을 전달하는 방법은 무엇입니까?

  25. 25

    중첩 된 DataGrid에서 ContextMenu 항목을 바인딩하는 방법은 무엇입니까?

  26. 26

    중첩 선택에서 중첩 된 두 값을 얻는 방법은 무엇입니까? mysql

  27. 27

    중첩 된 lapply / sapply 함수 내에 값을 추가하는 방법은 무엇입니까?

  28. 28

    경로없이 중첩 된 문서의 값을 쿼리하는 방법은 무엇입니까?

  29. 29

    중첩 된 JSON을 직렬화하는 방법은 무엇입니까?

뜨겁다태그

보관