代码之家  ›  专栏  ›  技术社区  ›  Mark Bolusmjak

在方案中何时使用(值…)(定义值…)

  •  5
  • Mark Bolusmjak  · 技术社区  · 15 年前

    我已经阅读了函数(如值)的文档,并定义了返回和使用多个值的值。我理解他们的所作所为。我不清楚你什么时候想用这种东西。

    什么时候构建一个单一的值列表并使用该单一的值列表是坏的/不可能的?

    2 回复  |  直到 15 年前
        1
  •  6
  •   Vijay Mathew Chor-ming Lung    15 年前

    定义值 是一种方便方法,允许您直接将变量绑定到表达式的结果。它为您节省了一些输入,因为您不必显式地解包列表。我认为在某些情况下,建立一个单一的价值清单是不好的或不可能的。事实上,这比 定义值 .

        2
  •  5
  •   grettke    15 年前

    Here 是我关于这个主题的原始文章;它被复制到下面。

    this 在comp.lang.scheme中,讨论了返回多个值的方法。R6R中似乎有3种解决方案:

    (import (rnrs))
    
    ; let-values + values
    (define (foo1)
      (values 1 2 3))
    
    (let-values (((a b c) (foo1)))
      (display (list a b c))
      (newline))
    
    ; cps
    (define (foo2 k)
      (k 1 2 3))
    
    (foo2 (lambda (a b c) 
            (display (list a b c))
            (newline)))
    
    ; list
    (define (foo3)
      (list 1 2 3))
    (let ((result (foo3)))
      (display result)
      (newline))
    

    Per Aziz和Aaron_S Point;您应该使用向读者传递最多信息的方法。