首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >qtruby、QUiLoader和respond_to?

qtruby、QUiLoader和respond_to?
EN

Stack Overflow用户
提问于 2010-04-03 03:34:12
回答 1查看 238关注 0票数 1

我正在用Ruby语言(使用qtruby)编写一个简单的Qt4应用程序来自学这两种方法。在大多数情况下,它运行得很好,但在尝试使用Ruby的“鸭子类型”时,我遇到了一个障碍;respond_to?似乎不能反映现实。

代码语言:javascript
复制
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="">, ... 

正如您所看到的,当我检查以确保从加载UI文件返回的对象具有children访问器时,我得到的是false。但是,如果调用访问器,我会得到一个数组而不是NoMethodError

那么,这是一个错误,还是我错误地理解了respond_to?

这看起来像here描述的问题,但我认为在对项目提出错误之前,我应该得到专家的意见。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-24 02:49:23

我刚刚查看了将Ruby代码映射到QT的qtruby代码,它们只使用method_missing而不实现respond_to?因此,它与您链接的问题完全相同。我通过使用obj.is_a(Qt::Widget)(例如)解决了这个问题,它显然不是鸭子类型,但在某些情况下工作得很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2568762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档