【问题标题】:How incomplete ClojureScript now? (range) (iterate) etcClojureScript 现在怎么不完整了? (范围)(迭代)等
【发布时间】:2013-07-05 07:31:11
【问题描述】:

我最近尝试用 ClojureScript 代替 Clojure。

当我在 node.js 上编译和运行时

(.log js/console (range 10))

我有

$ node app      
{ meta: null,
  start: 0,
  end: 10,
  step: 1,
  __hash: null,
  'cljs$lang$protocol_mask$partition1$': 0,
  'cljs$lang$protocol_mask$partition0$': 32375006 }

看到这个简单的代码不起作用,我有点惊讶。

这是由于我的特定环境造成的吗?我希望如此,如果这是我这边的问题,请指教。

这里是编译好的js:

cljs.nodejs = {};
cljs.nodejs.require = require;
cljs.nodejs.process = process;
cljs.core.string_print = cljs.nodejs.require.call(null, "util").print;
var rxcljs = {core:{}};
console.log(cljs.core.range.call(null, 10));

【问题讨论】:

  • 为什么你认为它不起作用?看起来node app 命令成功打印了使用(range 10) 创建的范围对象的内部。你期望看到什么?
  • 好吧,leinREPL 至少评估 user=> (范围 10) (0 1 2 3 4 5 6 7 8 9)

标签: node.js clojure clojurescript


【解决方案1】:

你可以console.log(range 10)的字符串表示:

(.log js/console (pr-str (range 10)))

或者干脆使用println函数:

(println (range 10))

在任何一种情况下,(0 1 2 3 4 5 6 7 8 9) 都会按预期打印。

【讨论】:

    【解决方案2】:

    看起来你想打印矢量; range 返回一个惰性序列。

    试试这个:

    (.log js/console (vec (range 10)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      • 2023-02-04
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      相关资源
      最近更新 更多