首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数不打印她体内的整数

函数不打印她体内的整数
EN

Stack Overflow用户
提问于 2020-12-12 10:20:07
回答 1查看 58关注 0票数 0

我是克洛尔的乞丐,当时我正在读一本包含这个功能的书:

代码语言:javascript
复制
(defn illustrative-function [] (+ 1 304) 30 "joe")

如果不带参数地调用该函数,它只返回"joe",如您所见:

代码语言:javascript
复制
(illustrative-function )
=> "joe"

我的问题是:

为什么函数中的数字没有打印? 305和30?即使我使用和参数(和参数),它也不会返回任何内容:

代码语言:javascript
复制
(defn illustrative-function [x] x (+ 1 304) 30 "joe")
=> #'dev-projects.core/illustrative-function

(illustrative-function 3)
=> "joe"

(illustrative-function [3])
=> "joe"

有人能解释一下为什么会发生这种事吗?

为什么没有打印整数和参数?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-12 10:56:48

defn的主体被包装在do中。do允许您执行多个指令,通常是针对副作用的.do中的最后一条语句是返回。这个看起来是这样的:

代码语言:javascript
复制
(defn illustrative-function 
  [] 
  (do
    (+ 1 304) ; no-op
    30        ; no-op
    "joe"))   ; return

(+ 1 304)被读取和计算,然后抛出。30只会被阅读和丢弃。然后,"joe"do的返回,然后是函数的返回。

如果您想要“打印”一些东西,您必须显式地print它。例如,将30替换为(println 30)。还请注意,在REPL中,返回值被打印到REPL中--如果您从其他地方调用该函数,则除非显式打印,否则不会打印任何内容。

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

https://stackoverflow.com/questions/65263813

复制
相关文章

相似问题

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