在Python中,我可以做这样的事情:
t = (1, 2)
a, b = t
...a 将是 1,b 将是 2。假设我在 Scheme 中有一个列表 '(1 2)
。有什么方法可以用 let
做类似的事情吗?如果有影响的话,我会使用 Racket。
最佳答案
在 Racket 中你可以使用match
,
(define t (list 1 2))
(match [(list a b) (+ a b)])
以及相关的东西,例如 match-define
:
(match-define (list a b) (list 1 2))
(match-let ([(list a b) t]) (+ a b))
这适用于列表、向量、结构等。对于多个值,您可以使用 define-values
:
(define (t) (values 1 2))
(define-values (a b) (t))
或let-values
。但请注意,我无法将 t 定义为“元组”,因为在(大多数)方案实现中多个值不是第一类值。
关于list - 方案相当于元组拆包是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4220515/