簡體   English   中英

在Ruby中如何在實例(對象本身)上使用end block?

[英]How to use do end block on a instance(object itself) in Ruby?

w = Gtk::window.new
w do
   title = "foo"
   resizable = false
   foo = bar
end

我想在每塊方法調用self其傳遞給塊之后。

-謝謝。

我相信一種方法可以是#instance_eval的用法,例如:

a = 'asd'
a.instance_eval do
  a.upcase!
end

a # => ASD

在塊內獲取對象的另一種方法是使用#tap ,但是您將不會擁有self:

gkt_window = Gtk::window.new

gtk_window.tap do |w|
  w.title     = 'foo'
  w.resizable = false
  w.foo       = bar
end # Now gtk_window will have all properties set and you can chain methods to this block

您可以使用BasicObject#instance_eval

w.instance_eval do
  title = 'foo'
  resizable = false
  foo = bar
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM