Я пишу простое приложение на Qt4 на Ruby (используя qtruby ), чтобы научить себя обоим. В основном все прошло хорошо, но, пытаясь использовать «утки» Руби, я столкнулся с проблемой; respond_to?
не похоже на реальность.
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'Qt4'
=> true
irb(main):003:0> require 'qtuitools'
=> true
irb(main):004:0> Qt::Application.new(ARGV)
=> #<Qt::Application:0xc3c9a08 objectName="ruby">
irb(main):005:0> file = Qt::File.new("dlg.ui") { open(Qt::File::ReadOnly) }
=> #<Qt::File:0xc2e1748 objectName="">
irb(main):006:0> obj = Qt::UiLoader.new().load(file, nil)
=> #<Qt::Dialog:0xc2bf650 objectName="dlg", x=0, y=0, width=283, height=244>
irb(main):007:0> obj.respond_to?('children')
=> false
irb(main):008:0> obj.respond_to?(:children)
=> false
irb(main):009:0> obj.children
=> [#<Qt::FormInternal::TranslationWatcher:0xc2a1980 objectName="">, ...
Как вы можете видеть, когда я проверяю, есть ли у объекта, который я получаю после загрузки файла пользовательского интерфейса, доступ к children
, я получаю false
. Однако, если вызвать этот метод доступа, я получу массив, а не NoMethodError
.
Итак, это ошибка или я неправильно понял respond_to?
?
Это похоже на проблему, описанную здесь , но я подумал, что получу экспертное заключение, прежде чем сообщать об ошибке в проекте.