【问题标题】:Row-fn with a parameter in clojureclojure 中带有参数的 Row-fn
【发布时间】:2015-08-20 13:34:12
【问题描述】:

我有两个函数,其中一个从数据库中获取数据

(defn getSimilarTexts[id]
   (j/query mysql-db
    ["select * from news"]
    :row-fn printText
    ))

另一个应该调用不同的函数,像这样:

(defn printText[row id]
  (oneWord (row :id) (row :title) (row :text) id))

但是我不知道:row-fn printText这一行怎么写,让printText函数得到id参数。

有什么办法可以做到吗?

【问题讨论】:

  • 与您的问题无关,但同样重要(IMO):Clojure 中的命名约定是使用小写字母用破折号分隔单词。这意味着你可以写get-similiar-texts,而不是getSimilarTexts。此外,我还会丢失get,而只需将函数命名为similar-news
  • 如果你可以从 row 获取它,为什么你需要函数 print-text 来获取 id 作为附加参数,因为你已经在这样做了 (:id row)
  • 这不是我正在使用的行的 id
  • :row-fn #(printText % id) 应该这样做
  • @tazrmi 我明白了,那么我会按照上面 cfrick 的建议进行操作。

标签: function parameters clojure row


【解决方案1】:

您可以使用闭包。下面是一个使用匿名函数的例子:

(defn getSimilarTexts[id]
   (j/query mysql-db
    ["select * from news"]
    :row-fn (fn [row]
              (printText row id))))

这里匿名函数中的id 变量将绑定到传递给getSimilarTextsid

【讨论】:

    猜你喜欢
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2017-09-07
    相关资源
    最近更新 更多