首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“让”中的读行不读下一行

“让”中的读行不读下一行
EN

Stack Overflow用户
提问于 2014-01-23 20:27:34
回答 1查看 118关注 0票数 0
代码语言:javascript
复制
  1 (use-modules (ice-9 rdelim))
  2 
  3 (define (show l) (display l))
  4 
  5 (define (read-two-lines)
  6         (let ((count  (read-line))
  7               (l      (read-line)))
  8              (show l))) ; or (show count)
  9              
 10 (read-two-lines)

上面的代码无法将第二行读入l。相反,它只读取了两次相同的值:-

代码语言:javascript
复制
scheme@(guile-user)> (load "test.scm")

line1
line2
line1

当line1后跟line2作为输入时,它将line1显示为输出而不是line2。这里发生了什么事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-23 21:33:26

我没有安装Guile,所以我不能测试它,但是在Scheme中,let并不保证任何评估顺序。因此,我最好的猜测是,count包含第二行,l包含第一行。

尝试使用let*而不是let

代码语言:javascript
复制
(define (read-two-lines)
  (let* ((count  (read-line))
         (l      (read-line)))
    (show l)))

有关更详细的解释,请参见这里

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21318625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档