在Python中,我可以做这样的事情:
t = (1, 2)
a, b = t
...a 将是 1,b 将是 2。假设我有一个列表'(1 2)
在方案中。有什么办法可以做类似的事情let
?如果有什么区别的话,我会使用 Racket。
在球拍中你可以使用match http://docs.racket-lang.org/reference/match.html#%28form._%28%28lib._racket/match..rkt%29._match%29%29,
(define t (list 1 2))
(match [(list a b) (+ a b)])
和相关的事情,比如match-define http://docs.racket-lang.org/reference/match.html#%28form._%28%28lib._racket/match..rkt%29._match-define%29%29:
(match-define (list a b) (list 1 2))
and match-let http://docs.racket-lang.org/reference/match.html#%28form._%28%28lib._racket/match..rkt%29._match-let%29%29
(match-let ([(list a b) t]) (+ a b))
这适用于列表、向量、结构等。对于多个值,您可以使用define-values http://docs.racket-lang.org/reference/define.html#%28form._%28%28quote._~23~25kernel%29._define-values%29%29:
(define (t) (values 1 2))
(define-values (a b) (t))
or let-values
。但请注意,我无法定义t
作为“元组”,因为多个值在(大多数)方案实现中不是第一类值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)