使用块初始化对象
是否可以使用块初始化对象,如下所示?
class Foo attr_reader :bar,:baz def initialize(bar,baz) @bar, @baz = bar, baz end end Foo.new do |bar, baz| # some logic to be implemented # @bar, @baz to be assigned end
当然,你可以从initialize
yield
,没有什么特别之处:
class Foo attr_accessor :bar, :baz def initialize yield self end end Foo.new do |f| f.bar = 123 f.baz = 456 end #=>
您还可以使用instance_eval
在接收器的上下文中评估块:
class Foo attr_accessor :bar, :baz def initialize(&block) instance_eval(&block) end end Foo.new do @bar = 123 @baz = 456 end #=> #
- 使用Roo Gem在Rails中解析XLS电子表格
- 为什么#!/ usr / bin / env ruby在crontab中不起作用?
- gem install pg error:无法理解Yosemite w / Ruby 2.1.5上的kern.osversion`14.0.0′
- rails 3.2.0和heroku
- SSL_connect SYSCALL返回= 5 errno = 0 state = SSLv2 / v3读取服务器hello A.
- 使用Zlib压缩ruby中的大文件以获取gzip
- 从ruby类调用jar文件
- 在Win32上,如何使用Perl,Python或Ruby(或C)检测是否按下了Left Shift或Right ALT?
- 处理混合数字 – 在模型中?