我有一个G类和我的自定义函数func,我希望这样一个块:
class G
def func(&block)
return '1' unless block_given?
# More code
end
end
我认为现在我做的时候
G g = new G
g.func {|t| t}
block_given?应该返回true但返回false
我也试过以下变种,没有度假胜地
g.func do |t|
end
任何帮助都将不胜感激。
答案 0 :(得分:3)
如果你纠正一些小的语法错误,它工作正常。请注意,ruby变量没有类型声明,对象实例化是通过类Class
的实例方法而不是关键字(如Java)完成的:
class G
def func(&block)
return '1' unless block_given?
block.call
end
end
g = G.new
g.func { puts 'block was called' }
g.func
# Output:
# irb(main):046:0>g.func { puts 'block was called' }
# block was called
# => nil
# irb(main):047:0>g.func
# => "1"
答案 1 :(得分:0)
(添加我的输出,虽然Matt打败了我。)
> class G
> def func(&block)
> return '1' unless block_given?
> # More code
> end
> end
=> nil
> g = G.new
=> #<G:0x856e444>
> g.func { |t| puts "hi" }
=> nil
> g.func
=> "1"