小编ric*_*ice的帖子

我可以对传递给方法的块强制执行arity吗?

有没有办法"打开"使用Proc.new或实例化的Proc的严格的arity强制执行Kernel.proc,以便它的行为类似于Proc实例化的lambda

My initialize method takes a block &action and assigns it to an instance variable. I want action to strictly enforce arity, so when I apply arguments to it later on, it raises an ArgumentError that I can rescue and raise a more meaningful exception. Basically:

class Command
  attr_reader :name, :action

  def initialize(name, &action)
    @name   = name
    @action = action
  end

  def perform(*args)
    begin
      action.call(*args)
    rescue ArgumentError
      raise(WrongArity.new(args.size))
    end
  end
end

class WrongArity < …
Run Code Online (Sandbox Code Playgroud)

ruby lambda proc

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

清除所有Vim变量

有没有办法unlet在当前的Vim会话中定义所有变量?您可以使用重置所有设置set all&,但我找不到变量的等效项.

我试过了:

:let vars = g:
:for var in keys(vars)
:  unlet var
:endfor
Run Code Online (Sandbox Code Playgroud)

但是当我:let g:,所有变量仍然存在.

vim

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

标签 统计

lambda ×1

proc ×1

ruby ×1

vim ×1