【问题标题】:In Clojure why use :only []在 Clojure 中为什么使用 :only []
【发布时间】:2011-10-16 17:54:52
【问题描述】:

lazy-xml 的来源如下:

(:use [clojure.xml :as xml :only []]
      [clojure.contrib.seq :only [fill-queue]])

使用clojure.xml 但没有列出:only 参数的目的是什么?

【问题讨论】:

    标签: clojure


    【解决方案1】:

    注意:as xml:only [] 组合时似乎使该行等效于(:require [clojure.xml :as xml])。如果您想将一些 var 复制到本地命名空间(即非空 :only)中,该样式可能很有用,但允许该命名空间的其余部分通过 :as 显式别名。既然他不是那样做的,那它真的应该只是一个:require

    【讨论】:

    • 可能编写此代码的人已经有一堆:use 声明并且不想编写单独的:require 子句。不是 IMO 推荐的决定,但如果他只有一个以这种方式使用的命名空间,那将为他节省几个字符。
    • 代码异味?我想知道为什么语言设计者不选择single(组合)使用/要求表单。
    • @SridharRatnakumar 什么。那个“我想知道”的问题没有意义。 ns 宏是组合使用/要求的形式,您必须以某种方式指定您希望将哪个部分解释为use,以及将哪个部分解释为require。他不能只是神奇地猜测。
    • @amalloy - 我的问题更像是“为什么我们首先需要单独的userequire 功能”?
    • 我自己做了一些研究,发现了这种可以统一使用/要求的新语法:github.com/stuartsierra/need
    猜你喜欢
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多