小编uzo*_*uzo的帖子

为什么splat在数组定义中使用?

def initialize(apps, catch=404)
  @apps = []; @has_app = {}
  apps.each { |app| add app }

  @catch = {}
  [*catch].each { |status| @catch[status] = true }
end
Run Code Online (Sandbox Code Playgroud)

Rack :: Cascade的这个方法splat(*)中,[*catch]代码服务的目的是什么?

我认为在方法参数中使用了一个splat来指示何时你将有一个未指定数量的参数.

splat在这里有不同的含义吗?

ruby splat

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

从数组中创建哈希 - 这是如何工作的?

fruit = ["apple","red","banana","yellow"]
=> ["apple", "red", "banana", "yellow"]

Hash[*fruit]    
=> {"apple"=>"red", "banana"=>"yellow"}
Run Code Online (Sandbox Code Playgroud)

为什么splat导致数组被如此整齐地解析为Hash?

或者,更确切地说,哈希如何"知道""苹果"是关键而"红色"是它的对应值?

是因为它们在水果阵列中处于连续位置吗?

在这里使用splat是否重要?哈希不能直接从arry定义自己吗?

ruby hash splat

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

Clojure与哪种功能语言的共同点最多?

我对函数式编程知之甚少,但对学习Clojure很感兴趣.

是否有任何函数式语言可以成为理解函数式编程在Clojure中如何工作的一个很好的参考点?

或者Clojure在其函数式编程方法上有多么不同,我最好只关注Clojure的功能特性呢?

functional-programming clojure

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

使用块初始化有什么好处吗?

是否有任何理由使用块初始化,如下所示:

x = Observer.new do
  add_event(foo)
  some_other_instance_method_on_observer
  self.some_attribute = something
end
Run Code Online (Sandbox Code Playgroud)

而不是在像这样的实例变量上使用点运算符初始化属性:

x = Observer.new
x.add_event(foo)
x.some_other_instance_method_on_observer
x.some_attribute = something
Run Code Online (Sandbox Code Playgroud)

ruby initialization

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

MVC与敏捷有争执吗?

敏捷强调快速迭代而不浪费计划.

MVC强调基于计划架构的关注点分离.

由于非MVC技术需要较少的规划,它们是否更适合敏捷项目?

model-view-controller agile

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

splat在这做什么?

match, text, number = *"foobar 123".match(/([A-z]*) ([0-9]*)/)
Run Code Online (Sandbox Code Playgroud)

我知道这是在进行某种正则表达式匹配,但是splat在这里扮演什么角色,有没有办法在没有splat的情况下这样做,所以它不那么令人困惑?

ruby splat

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

将所有require语句删除到单独文件中的错误做法?

如果我的主应用程序文件中有一大堆需求:

require 'a'
require 'b'
require 'c'
require 'd'
require 'e'
require 'f'
require 'g'
require 'h'
require 'i'
require 'j'
Run Code Online (Sandbox Code Playgroud)

将所有这些需要放入条带并将它们放在一个单独的文件中,只需要满足所有要求 - 让我们称之为' all_requires.rb' - 这样我就可以说:

require 'all_requires'
Run Code Online (Sandbox Code Playgroud)

我从未在其他人的代码中看到过这种方法,所以也许是有原因的?

ruby require

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

为什么klass与const_get一起使用?

def self.get(server)
  return unless server
  server = server.to_s

  if klass = @handlers[server]
    obj = Object
    klass.split("::").each { |x| obj = obj.const_get(x) }
    obj
  else
    try_require('rack/handler', server)
    const_get(server)
  end
end
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,const_get用于在此行上检索某种命名常量:

    klass.split("::").each { |x| obj = obj.const_get(x) }
Run Code Online (Sandbox Code Playgroud)

如果是这样,为什么klass特别在这里使用?我读过这个klass用于避免命名空间与" class"关键字冲突.但在这个例子中,我没有看到可能发生冲突的地方.

ruby

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

为什么你可以在'initialize'中调用instance_eval(而不是class_eval)?

  class Observer
    def initialize(&block)
      instance_eval(&block) if block_given?
    end
  end 
Run Code Online (Sandbox Code Playgroud)

我想知道在这里假设与'initialize'一起使用的块的类型.

由于调用了instance_eval,这意味着在Observer类的上下文中计算块.

为什么它会这样做,而不是比如说class_eval,以及在类的上下文中评估块的结果可能是什么?

另外,如何调用它?

ruby

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

什么是在Ruby Web应用程序中使用Proc或Lambda时的示例?

我很难想象在网络应用程序中实际使用Procs和Lambdas.有没有人在你的代码中有一个他们派上用场的情况的例子?

ruby web-applications

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