【问题标题】:How to execute clojure function with no arguments如何在没有参数的情况下执行 clojure 函数
【发布时间】:2016-09-02 20:44:02
【问题描述】:

我定义了一个不带参数的 clojure 函数。

例子

(defn m
[]
...)

如何在光表中执行此功能..

(m)(m nil) 或无论如何。

使用(m)(m nil) 我没有得到任何输出

【问题讨论】:

  • 分享实际功能,您可能会更清楚为什么看不到任何输出。

标签: clojure lighttable


【解决方案1】:

要运行不带参数的函数,调用如下所示:

(m)

如果您添加了一个 nil,它将调用一个带有一个参数的函数,并且该参数的值将是 nil。如果您没有看到输出,那是因为您的函数没有产生任何输出。由于您使用的是 light table,请确保调用位于顶层,而不是在另一个函数定义中(重新计算 ()s)

【讨论】:

    【解决方案2】:

    让 LightTable 执行 Clojure 有两种模式:

    1. 在 instarepl 中,您输入的所有内容都会立即得到评估。
    2. .clj 文件中,Ctrl+Enter 评估当前上下文,然后 Ctrl+Shift+Enter 评估整个文件。

    在任何一种情况下,您都会看到表达式的计算结果:所有 clojure 表达式计算结果(如果它们不抛出异常,也会显示)。

    所以我认为您正在使用模式 (2),没有评估表达式

    话虽如此,如果你输入足够多的废话,LightTable 可能会放弃它。

    如果我是对的,你很快就会知道如何调用不带参数的函数。

    【讨论】:

      【解决方案3】:

      要运行该函数,您首先需要评估函数定义 - 将光标放在函数定义的任何行上按 Ctrl+Enter。然后你应该能够使用调用你的函数的代码来评估一行,即(m)

      当您评估 Clojure 代码时,Light Table 需要连接到您的代码的 Leiningen 项目(如果有的话),如果没有,它可能会连接到“LightTable-REPL”,或者您可以告诉它连接到改为“Light Table UI”(如果您想在 LT 内部使用 Light Tables 的代码)。

      您的函数也可能没有返回值,例如它只调用其他旨在产生副作用但没有有用返回值的函数(例如print)。但即使在这种情况下,当您评估包含函数调用的行时,您也应该在 Clojure 文件中看到打印的 nil

      如果您仍然遇到问题,请随时 在the Light Table Gitter roomthe Google Groups group 寻求帮助,或者,如果你认为你发现了一个错误,open an issue on GitHub

      【讨论】:

        猜你喜欢
        • 2022-08-20
        • 1970-01-01
        • 2017-10-12
        • 1970-01-01
        • 1970-01-01
        • 2022-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多