小编uzo*_*uzo的帖子

为什么这段代码需要klass?

    def record
      return unless @supported

      klasses = profile_options[:formats].map { |f| RubyProf.const_get("#{f.to_s.camelize}Printer") }.compact

      klasses.each do |klass|
        fname = output_filename(klass)
        FileUtils.mkdir_p(File.dirname(fname))
        File.open(fname, 'wb') do |file|
          klass.new(@data).print(file, profile_options.slice(:min_percent))
        end
      end
    end
Run Code Online (Sandbox Code Playgroud)

我理解'klass'用于防止命名空间与关键字'class'冲突,但为什么在此代码中需要'klass'或'class'(来自Rails :: ActiveSupport) - 它们的目的是什么?什么是klass用于这里?或者,如果使用了类,为什么需要它呢?什么是klass/class?

ruby

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

在这段代码中`@ins << lambda`的目的是什么?

在下面列出的第一个方法中,使用方法,它看起来像:ins是一个实例变量,attr是一个为:ins提供getter和setter的方法.我不确定的是它的@ins << lambda作用.

module Rack
  class Builder
    attr :ins
    def use(middleware, *args, &block)
      middleware.instance_variable_set "@rack_builder", self
      def middleware.rack_builder
        @rack_builder
      end
      @ins << lambda { |app|
        middleware.new(app, *args, &block)
      }
    end

    def run(app)
      klass = app.class
      klass.instance_variable_set "@rack_builder", self
      def klass.rack_builder
        @rack_builder
      end
      @ins << app #lambda { |nothing| app }
    end

    def leaf_app
      ins.last
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby lambda

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

调用Proc的ArgumentError

s = Proc.new {|x|x*2}
puts s.call(5)
-> 10

def foo(&a)
 a.call(5)
end

puts "test foo:"
foo(s)
Run Code Online (Sandbox Code Playgroud)

当我尝试调用上面的proc时,我得到:

foo: wrong number of arguments (1 for 0) (ArgumentError)
Run Code Online (Sandbox Code Playgroud)

我的期望是,如果使用此类签名定义方法,我可以将proc传递给方法:

def foo(&a)
Run Code Online (Sandbox Code Playgroud)

然后我可以像这样执行proc insiide foo:

 a.call(5)
Run Code Online (Sandbox Code Playgroud)

ruby proc-object

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

Rails/Django项目有可能成为死亡三月吗?

我曾在Java世界的Death March项目中工作过- 由于管理不善和笨重,复杂的技术,通常跨越多个系统并且通常与瀑布方法相关联的项目,注定会从一开始就失败的项目.

Rails和Django被吹捧为敏捷开发技术,这意味着他们的目标是能够快速响应变化.

这是否意味着他们对大型企业系统的Death March场景免疫?或者Rails/Django项目是否还有足够的复杂性,它可能像Java项目一样失控?

django agile ruby-on-rails waterfall

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

标签 统计

ruby ×3

agile ×1

django ×1

lambda ×1

proc-object ×1

ruby-on-rails ×1

waterfall ×1