Ruby块的问题 [英] Problem with Ruby blocks

查看:98
本文介绍了Ruby块的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

代码有什么问题?

def call_block(n)

  if n==1

    return 0
  elsif n== 2

    return 1
  else
    yield
    return call_block(n-1) + call_block(n-2)

  end

end


puts call_block(10) {puts "Take this"}

我正在尝试使用yield打印除第十斐波那契数字以外的其他数字.

I am trying to use yield to print Take this other than the tenth fibonacci number.

我遇到了错误: 在"call_block"中:未提供任何阻止(LocalJumpError)

I am getting the error: in `call_block': no block given (LocalJumpError)

即使以下代码也会引发错误:

Even the following code throws error:

def call_block(n)

  if n==1
    yield
    return 0
  elsif n== 2
    yield
    return 1
  else
    yield
    return call_block(n-1) + call_block(n-2)

  end

end


puts call_block(10) {puts "Take this"}

推荐答案

您可能想使用此行,如 Adam Vandenberg 提示:

You might want to use this line, as Adam Vandenberg hints:

return call_block(n-1) { yield } + call_block(n-2) { yield }

这篇关于Ruby块的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆