2018年12月7日 星期五

Ruby instance_eval & block



```rb
class Test
  def initialize(&block)
    @name = "Hello World"

    instance_eval(&block) if block_given?
  end

  def name
    @name
  end
end
```

這樣是完全可以的,因為在 block 裡面的 `self` 變成了 `Test` instance

```rb
Test.new do
  puts name
end

# => Hello World
```

沒有留言:

張貼留言