在ns definitiion中使用引用括号来表示

时间:2015-12-25 03:10:57

标签: clojure

当使用require时,我需要在左括号之前使用引号但是当我使用ns时:require我不必使用引号。那是为什么?

var Box = React.createClass({
      getInitialState: function () {
    return {data: []};
  },
  loadStuffFromServer: function() {
    $.ajax({
      url: this.props.url,
      dataType: 'json',
      cache: false,
      success: function(data) {
        this.setState({data: data});
        console.log(data);
      }.bind(this),
      error: function(xhr, status, err) {
        console.error(this.props.url, status, err.toString());
      }.bind(this)
    });
  },
  componentDidMount: function() {
    this.loadStuffFromServer();
    setInterval(this.loadStuffFromServer, this.props.pollInterval);
  },
  render: function() {
    return (
      <div>
        { this.state.data.items[0]}
      </div>
    );
  }
});

我知道引用不评估括号前面的表达式,但不完全确定为什么引号在括号前需要,因为它们不是表达式所以不应该评估任何内容。

1 个答案:

答案 0 :(得分:5)

您可以require未在命名空间中绑定的符号 - 向量之前的'(或者只有'的示例,例如(require 'clojure.string)不使用任何选项)可以防止因使用未绑定的符号而导致的错误。

ns是一个宏,它使用其正文的:require部分来构建对require的调用。允许宏决定评估哪个输入与左侧作为文字输入,因此不要将'ns宏一起使用。