小编Kyl*_*yle的帖子

为什么不可变对象启用函数式编程?

我正在努力学习斯卡拉,但我无法理解这个概念.为什么使对象不可变有助于防止函数中的副作用.任何人都可以解释我是五岁吗?

functional-programming scala

34
推荐指数
3
解决办法
7746
查看次数

我可以获取命名空间的元数据吗?

如果我将元数据放在名称空间声明中:

(ns 
^{:doc "Myspace documentation"}
myspace
)
Run Code Online (Sandbox Code Playgroud)

我能得到它吗 ?我试过了(meta myspace),(meta #'myspace)但我无法得到它

namespaces metadata clojure

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

Clojure'包含'的问题

我正在使用Closure Box进行一些Clojure教程,并输入以下代码:

user> (def stooges (vector "Moe" "Larry" "Curly"))
#'user/stooges
user> (contains? stooges "Moe")
false
Run Code Online (Sandbox Code Playgroud)

这不应该评估为真?任何帮助表示赞赏.

contains vector clojure

10
推荐指数
3
解决办法
2937
查看次数

从Ruby中的数组末尾删除nil项

给定一个数组:

[1, 2, nil, nil, 3, nil, 4, 5, 6, nil, nil, nil]
Run Code Online (Sandbox Code Playgroud)

我喜欢nil从数组的末尾删除's.一些丑陋的循环并不难解决,但我希望有一种Ruby方法可以做到这一点.

Result: [1, 2, nil, nil, 3, nil, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

ruby

5
推荐指数
2
解决办法
1973
查看次数

当你可以使用"="(来自Hartl的教程)时,为什么需要赋值方法?

我很难理解所需的赋值函数,如第8.2.3章所述.Hartl的教程.

作为上下文,他专注于以下sign_in功能的第二行:

  def sign_in(user)
    cookies.permanent[:remember_token] = user.remember_token
    self.current_user = user #<-- this line
  end
Run Code Online (Sandbox Code Playgroud)

在他提到的地方,因为它的作业,必须另外定义为

def current_user=(user)
    @current_user = user
end
Run Code Online (Sandbox Code Playgroud)

凡法current_user=明确设计成处理分配current_user.我的困惑是:

  1. 为什么这甚至是必要的?我认为一个简单的=东西可以让你分配东西.例如user.email = hello@kitty.com

  2. 此外,当最终他将编码时redirect_to current_user,属于SessionsControllerget的东西如何被转换为由UsersController?控制的视图?

谢谢!!

ruby ruby-on-rails railstutorial.org

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

如果在数组中找不到项目,则使用默认值

所以我的代码试图从对象数组中选择一个对象,如果找不到该对象,我想创建我的默认值。

lead_time = lead_times.select{|d| LeadTimeProfile.new unless d.day_of_week == day }
Run Code Online (Sandbox Code Playgroud)

然而,据我所知,这并没有给我返回默认的 LeadTimeProfile。

有没有办法做到这一点?还是我做对了?

ruby select

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

字段访问器作为clojure中的函数?

有没有办法将字段访问器转换为函数?当我试图这样做时,我真的很惊讶

(map .x [o1 o2])
Run Code Online (Sandbox Code Playgroud)

但反而必须这样做

(defn x [o] (.x o))
(map x [o1 o2])
Run Code Online (Sandbox Code Playgroud)

这似乎是不必要的.有没有办法为你创建这个功能?

clojure clojure-java-interop

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

获取惰性列表的前n项的惰性列表

在Clojure中,我有一个列表

[a, b, c, d]
Run Code Online (Sandbox Code Playgroud)

我想从它中删除一个新的无限元组列表

[ [a,b,c], [b,c,d], [c,d,a], [d,a,b], [a,b,c] ... ]
Run Code Online (Sandbox Code Playgroud)

我试图通过内置的seq函数找出如何以纯函数方式执行此操作.

这是直截了当的,我还没有破解它?或者它实际上是某种难题?(在其他语言中,我会编写自己的循环迭代器并跟踪很多状态.)

更新:此外,为什么有人投票这个?

sequences clojure

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

在ruby中编写一个DSL方法,它将创建一个带参数的方法

我正在尝试为后台工作者类写一个DSL,我有点卡住尝试完成某些事情.

理想情况下,我应该能够像以下一样写一个工作者......

job :job_name do |param1, param2|
  puts param1
end
Run Code Online (Sandbox Code Playgroud)

现在,在我的工人超类课程中,我正在做这样的事......

class Worker
  def self.job(job_name, &block)
    define_method job_name do
      # stuck
    end
    # do some additional stuff here
  end
end
Run Code Online (Sandbox Code Playgroud)

想要做的是定义一个方法,该方法可以访问原始作业调用中使用的块参数,因此我可以通过以下方式解除此作业:

Worker.new.job_name(param1, param2)
Run Code Online (Sandbox Code Playgroud)

创建的方法应该在功能上等同于:

def job_name(param1, param2)
  puts param1
end
Run Code Online (Sandbox Code Playgroud)

这有任何意义吗?希望有人能指出我正确的方向.

ruby dsl metaprogramming jruby

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

c中多个范围之间的随机数

我想在C中的多个范围之间生成一个随机数.另外,我想从用户那里获取范围数量的输入.我有一个在一个范围内生成随机数的函数,我可以使用该函数生成这样的多个范围吗?请帮忙.

c random

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