如何从实例方法内部调用 Shoes 方法?

2024-01-05

我正在尝试扩展我已经编写的 Ruby 应用程序以使用 Shoes。我已经编写了一个类,并且希望能够在该类中使用 GUI。也就是说,我希望我的班级有这样的内容:

class MyClass
   def draw
    # draw something using Shoes
  end
end

里面还有一个方法MyClass将会通知draw()当它想画东西的时候。

我尝试了多种方法,但似乎都不起作用。我可以将整个课程封装在一个 Shoes 应用程序中。假设我想画一个椭圆形:

Shoes.app {
  class MyClass
    def draw
      oval :top => 100, :left => 100, :radius => 30
    end
  end
}

但随后它说undefined method 'oval' for MyClass.

我也尝试过这个:

class MyClass
  def draw
    Shoes.app {
      oval :top => 100, :left => 100, :radius => 30
    }
  end
end

运行成功,但每次都会打开一个新窗口test()叫做。

如何从实例方法内部使用 Shoes 绘制东西?


Shoes.app { ... }执行代码块的instance_eval。这意味着块的主体被执行,就像 self 是一个实例一样Shoes(或者它在幕后使用的任何类)。您需要执行的操作如下所示:

class MyClass
  def initialize(app)
    @app = app
  end
  def draw
    @app.oval :top => 100, :left => 100, :radius => 30
  end
end

Shoes.app {
  myclass = MyClass.new(self) # passing in the app here
  myclass.draw
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从实例方法内部调用 Shoes 方法? 的相关文章

  • 嵌套 has_one 关联的强参数

    我似乎遗漏了一些明显的东西 但我无法允许嵌套的属性has one协会 控制器 def create crossword Crossword new crossword params if crossword save render show
  • 从logstash中的文件名获取事件的时间戳

    我们有一个将事件写入文件的进程 没有时间戳 文件名本身带有时间戳后缀 该时间戳应用于文件中的所有事件 现在 我尝试使用logstash的输入文件插件来解析该文件 有没有一种方法可以将文件名获取到字段 以便我可以使用 gsub 过滤器提取时间
  • 如何在不初始化Rails的情况下从schema.rb创建数据库?

    我正在尝试从 schema rb 创建所有表 我使用命令 rake db schema load 但是 这失败了 因为在我的一个初始化程序中 它引用了一个显然不存在的模型 表 因为数据库为空 我可以注释掉这些行 然后再次运行 schema
  • 通过 ruby​​ 进程共享变量

    我正在编写一个 gem 其中我必须分叉两个进程来启动两个 webrick 服务器 我想通过基类的类方法启动该服务器 因为应该只运行这两个服务器 而不是多个服务器 在运行时 我想调用这两台服务器上的一些方法来更改变量 我的问题是 我无法通过基
  • 带有 Rake 的 RubyMine 调试器?

    使用 RubyMine 3 0 我设置了 Rake 配置来运行单元测试 然后我设置了一些断点 然后运行 Rake 任务 没有命中断点 测试只是像平常一样执行 然后退出 RubyMine 调试器无法通过 Rake 运行吗 尝试这个 转到运行
  • 使用yard创建文档时如何防止[查看源代码]链接?

    我正在使用yard生成项目文档 但我不想在文档中显示 查看源代码 链接 我已深入研究yard官方指南 但仍然没有得到解决方案 有什么想法吗 谢谢 我可能有点晚了 但您可以通过从 method details 部分中删除 源 部分来轻松自定义
  • 使用哈希时 fetch 与 [] ? [复制]

    这个问题在这里已经有答案了 来自鲁比 科恩斯about hashes rb 为什么你可能想使用 fetch代替 当访问哈希键时 默认情况下 使用 如果存在则检索哈希值 如果不存在则返回 nil Using fetch给你一些选择 请参阅文档
  • 为什么递归会出现“堆栈级别太深”?

    我有这个红宝石代码 def get sum n return 0 if n lt 1 n 3 0 n 5 0 n get sum n 1 get sum n 1 continue execution end puts get sum 999
  • Ruby/Rails - 如何创建类并从控制器访问它

    我一直在尝试使用一些不同的 gem 在 Rails 3 中显示谷歌地图 但遇到了一些问题 幸运的是我发现了这个https github com YouthTree bhm google maps https github com Youth
  • STI 在遗传类型之间发生变化。

    在我的模型中 我像这样使用 STI 车辆型号 vehicle rb class Vehicle lt ActiveRecord Base end 车型 car rb class Car lt Vehicle end 总线模型 bus rb
  • Rails 中的“class << self”是什么意思? [复制]

    这个问题在这里已经有答案了 可能的重复 Ruby 中的 class https stackoverflow com questions 2505067 class self idiom in ruby有人可以向我解释一下 class htt
  • 在文档片段中查找注释或文本节点

    我必须清理 Nokogiri HTML DocumentFragment 文档 删除仅包含空格的注释节点和文本节点 这是一个例子 html p paragraph p p paragraph p p paragraph p doc Noko
  • 用于验证网络路径的正则表达式 PHP、jQuery、JavaScript、Ruby

    尝试找出用于验证网络路径的正则表达式 即 comp xyz or comp or comp x y z storage或者所有部分都更长的东西 但希望能够传达其要点 我目前拥有的是一个简单的输入字段 用户可以通过它传递信息 事情是我不希望他
  • 在 Ruby 中,围绕子方法执行块的最佳方法是什么?

    我有一个父类 class Base def my method block method do EXECUTE WHATEVER S IN THE CHILD VERSION OF my method HOW TO DO end end d
  • factory_girl + rspec 似乎并没有在每个示例后回滚更改

    类似于这里描述的问题 http rpheath com posts 411 how to use factory girl with rspec http rpheath com posts 411 how to use factory g
  • 在 (Mac)Vim 中查看 ri 时摆脱 ANSI 转义字符

    我在 gvim 和 MacVim 中查看 ri 文档时遇到问题 在两者上都尝试过 一些 ri 文档包含在终端窗口中查看时看起来不错的文本装饰 但在 gvim MacVim 中查看时包含 ANSI 转义字符 例如 以下 ri 片段来自 ri
  • 如何读取rack请求中的POST数据

    当我运行curl命令时 curl v H Content type application json X POST d name abc id 12 subject my subject http localhost 9292 要将包含数据
  • Base36 编码字符串?

    我一直在网上查找 但找不到解决此问题的方法 在 Python Ruby 或 Java 中 如何对以下字符串进行 Base 36 编码 nOrG9Eh0uyeilM8Nnu5pTywj3935kW 5 Ruby 以 36 为基数 s unpa
  • 如何检查用户电子邮件的唯一性并将结果传递给 jQuery?

    我有这个问题 我正在控制器中检查用户电子邮件并发送 json 成功响应 如果已获取 并添加输入的 css 样式 我还需要阻止提交并添加一些消息 这是我的检查电子邮件操作 使用本文 http paydrotalks com posts 45
  • Rails 未定义“2013-03-06”的方法“strftime”:字符串

    我收到错误 2013 03 06 的未定义方法 strftime 字符串 当尝试使用 strftime 从字符串 2013 03 06 正常显示日期 2013 年 6 月星期日 3 日或类似的日期 时 在我的 index html erb

随机推荐