相关疑难解决方法(0)

Ruby:Proc#call vs yield

thrice方法的Ruby中,以下两个实现之间的行为差​​异是什么?

module WithYield
  def self.thrice
    3.times { yield }      # yield to the implicit block argument
  end
end

module WithProcCall
  def self.thrice(&block)  # & converts implicit block to an explicit, named Proc
    3.times { block.call } # invoke Proc#call
  end
end

WithYield::thrice { puts "Hello world" }
WithProcCall::thrice { puts "Hello world" }
Run Code Online (Sandbox Code Playgroud)

通过"行为差异",我包括错误处理,性能,工具支持等.

ruby yield

75
推荐指数
4
解决办法
4万
查看次数

Ruby与计算机科学相关的屈服特征

我最近发现了Ruby的块和屈服特征,我想知道:这在计算机科学理论方面适合哪些方面?它是一种函数式编程技术,还是更具体的?

ruby functional-programming yield

49
推荐指数
2
解决办法
9896
查看次数

在ruby中如何在ruby中编写'do'方法?

我一直在Ruby中编写相同的代码模式,看起来它会受益于'do'样式的代码,但我不确定如何编写该方法.

我一直在做这种代码模式,它以相同的代码行开始和结束......

x.increment!(:step_count) # same each time
# ...then some different code each
x.update_column(:step_description, "blerg message") # same each time
Run Code Online (Sandbox Code Playgroud)

我觉得它会受益于'做'这样的东西......

update_steps "blerg message" do
    # ...then some different code each
end
Run Code Online (Sandbox Code Playgroud)

然后在'do'内部每次执行公共代码.

我将如何制作一个可以使用'do'的方法.

谢谢!

编辑:我认为不要关闭它是很重要的,因为我不知道要搜索'block'或'yield'.可能不知道这些术语的人最终可能会搜索"do".

ruby yield ruby-on-rails

6
推荐指数
2
解决办法
2622
查看次数

了解Ruby语法

可能的重复:
学习Ruby的最佳方法是什么?
在Ruby on Rails上解释Iterator语法

我还在学习红宝石,红宝石等等.我越来越了解所有的ruby和rails语法,但这个让我有点难过.

respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @contact_lists }
end
Run Code Online (Sandbox Code Playgroud)

我认为,respond_to是一种采取行动的方法.这两种格式看起来也可能是方法调用,但我不知道.

ruby syntax ruby-on-rails

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

我如何使用`yield`?

我有一个清单:

list = ["mango", "apple", "pearl", "peach"]
Run Code Online (Sandbox Code Playgroud)

我需要使用yield这行代码:

answer = myIndexOf(list) {|e| e == "apple"}
Run Code Online (Sandbox Code Playgroud)

返回值1,该值是"apple"数组中的索引.

我有这个,但我不明白yield.

def myIndexOf(list)  
  yield answer if block_given?  
  result = list.index(answer)  
  return answer  
end  
Run Code Online (Sandbox Code Playgroud)

任何人都可以对此有所了解吗?

ruby yield

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

yield如何访问传递给方法的块?

产量似乎既不是对象也不是方法.它是什么?它如何访问作为方法参数传递的块?

ruby yield block

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

使用方法调用的ruby块

以下代码完美无缺.

@doc = open(link) { |f| Hpricot(f) }
Run Code Online (Sandbox Code Playgroud)

但是我想使用下面的代码,它似乎与Hpricot块不匹配(例如@doc是一个TempFile对象,而不是Hpricot文档对象)

@doc = resolve_link(link) { |f| Hpricot(f) }

def resolve_link(link)
  begin
    return open(link)
  rescue
    logger.debug("#{$!} for link #{link}")
    raise Exceptions::ErrorResolvingLink.new("Cannot resolve link #{link}.")
  end
end
Run Code Online (Sandbox Code Playgroud)

知道如何让代码的第二个版本工作吗?

ruby hpricot block

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