小编Jas*_*ese的帖子

coll是否适合在clojure中收集?

我一直在使用术语coll,并且刚刚假设它意味着收集或列表.但我们都知道他们对假设的看法.只是想找一点澄清.

clojure

4
推荐指数
1
解决办法
100
查看次数

如何在clojure中避免重复的函数参数?

我有一系列功能,它们都做不同的事情但传递相同的数据.假设我有以下作为参数向量.

[{:keys [x y vx vy x-min x-max y-min y-max] :or {x-min 0 x-max c-width y-min 0 y-max c-height}}]
Run Code Online (Sandbox Code Playgroud)

基本上你不想重复多次的事情.我有一个想法是做一些像.

(def func-args [x y z])
(defn func func-args (+ x y z))
Run Code Online (Sandbox Code Playgroud)

然后,如果我有类似的功能,我可以重新使用func-args.但是,前一个示例的第一行引发了无法解析符号x的错误.

  • 有没有办法让矢量成员作为符号?
  • 有没有比我建议的方法更实用的方法来完成函数参数代码膨胀减少?

clojure

3
推荐指数
1
解决办法
131
查看次数

如何在clojure中展平嵌套列表?

我有一个函数返回看起来像这样的结果:

(({:one 1}) ({:two 2} ({:three 3} {:four 4})))
Run Code Online (Sandbox Code Playgroud)

是否有一种简单/惯用/有效的方法将上面的列表展平为一个列表:

({:one 1} {:two 2} {:three 3} {:four 4})
Run Code Online (Sandbox Code Playgroud)
  • 有没有办法将不确定数量的嵌套列表项转换为单个列表?如果能够处理不同级别的嵌套会很好.
  • 或者只是一个map忽略列表级嵌套的函数,并在叶子上运行?
  • 也许我应该在功能级别做一些不同的事情来构建数据?(例如,reduce而不是map)

clojure

2
推荐指数
1
解决办法
882
查看次数

如何编写一个定义具有给定名称的另一个函数的函数

这是我的clojure代码:

(defn salutation-adder-maker                                                                                   
  ([salutation call]                                                                                     
   (def call (salutation-adder-maker salutation)))                                                             
  ([salutation]                                                                                          
   #(str % salutation))                        
)                                                                                                        
(salutation-adder-maker "-Thanks!" salutation1)                                                              
(salutation1 "Help me!")
Run Code Online (Sandbox Code Playgroud)

底部的两行代码给出了无法解析符号的错误salutation1.函数编译很好,但这是因为它将函数定义为call.因此以下代码有效:

(call "Help me!")
Run Code Online (Sandbox Code Playgroud)

它吐了出来

Help me-Thanks!
Run Code Online (Sandbox Code Playgroud)

而不是salutation1具有该功能的功能.如何更改代码以便salutation1执行与call当前相同的操作?

我希望能够传递两个参数:

  • 最后补充的称呼
  • 给予添加该称呼的功能的名称

例如:

(salutation-adder-maker "-Have a good day!" day_salutation)
(day_salutation "I will talk to you later")=>"I will talk to you later-Have a good day!"
Run Code Online (Sandbox Code Playgroud)

clojure

1
推荐指数
1
解决办法
73
查看次数

Clojurescript地图功能出乎意料地表现出来

我有两个代码片段,我认为这两个代码片段都会产生警报.但是,第一个结果为none,而第二个执行警报.

(map #(.alert js/window %) ["hey1" "hey2"])
Run Code Online (Sandbox Code Playgroud)

这个轻微的修改按预期打印(零nil),以及修复警报问题.问题是为什么

(print (map #(.alert js/window %) ["hey1" "hey2"]))
Run Code Online (Sandbox Code Playgroud)

另一个奇怪的观察是,第一个代码片段来自浏览器 - repl,但不是在键入代码时.

地图功能副作用是免费的,但打印不是吗?也许我不知道一些核心代码优化?

解决方法和答案都很受欢迎.如果您需要更多信息,请在评论中告诉我.

[org.clojure/clojurescript"1.8.51"]

BOOT_CLOJURE_VERSION = 1.7.0

BOOT_VERSION = 2.5.5

java版"1.8.0_101"

说明:Ubuntu 14.04.4 LTS

printing clojure clojurescript map-function

1
推荐指数
1
解决办法
73
查看次数

Rails无法生成模型

我正在尝试按照这里的教程学习rails .但是,当我进入创建模型的部分并运行此命令时:

bin/rails generate model Article title:string text:text
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

/usr/lib/ruby/vendor_ruby/spring/application.rb:152:in `serve': undefined method `cleanup!' for ActionDispatch::Reloader:Class (NoMethodError)
from /usr/lib/ruby/vendor_ruby/spring/application.rb:131:in `block in run'
from /usr/lib/ruby/vendor_ruby/spring/application.rb:125:in `loop'
from /usr/lib/ruby/vendor_ruby/spring/application.rb:125:in `run'
from /usr/lib/ruby/vendor_ruby/spring/application/boot.rb:18:in `<top (required)>'
from /usr/local/lib/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/lib/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from -e:1:in `<main>'
Run Code Online (Sandbox Code Playgroud)

这是我的第二次经历,所以我知道我已经遵循了所有步骤.我知道在哪里寻找解决方案或知道解决方案是什么?这真让我陷入困境.

版本:

  • Ubuntu 16.04
  • ruby 2.3.1p112(2016-04-26)[x86_64-linux-gnu]
  • 宝石2.6.12
  • rails 5.1.0

ruby-on-rails

1
推荐指数
1
解决办法
743
查看次数