如何检查 ruby​​ 中是否定义了私有方法

2024-01-11

我能找到的最接近的是在 Ruby 中,如何检查方法“foo=()”是否已定义? https://stackoverflow.com/questions/2348521/in-ruby-how-do-i-check-if-method-foo-is-defined,但仅当该方法是公共的时才有效,即使在类块内也是如此。

我想要的是:

class Foo
  private

  def bar
    "bar"
  end

  magic_private_method_defined_test_method :bar #=> true
end

我尝试过的:

class Foo
  private

  def bar
    "bar"
  end

  respond_to? :bar #=> false
  #this actually calls respond_to on the class, and so respond_to :superclass gives true
  defined? :bar #=> nil
  instance_methods.include?(:bar) #=> false
  methods.include?(:bar) #=> false
  method_defined?(:bar) #=> false
  def bar
    "redefined!"
  end # redefining doesn't cause an error or anything

  public
  def bar
    "redefined publicly!"
  end #causes no error, behaves no differently whether or not #bar had been defined previously
end

另一种方法是使用:respond_to? https://apidock.com/ruby/Object/respond_to%3F, e.g.

self.respond_to?(:bar, true)

请注意,第二个参数在这里很重要 - 它表示:respond_to?应该查找所有作用域方法,包括私有方法。

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

如何检查 ruby​​ 中是否定义了私有方法 的相关文章

  • 为什么我在 R 向量的类别中看到“整数”而不是“向量”

    为什么从数据框中切片的列的数据类型显示为 整数 而不是 向量 df lt data frame x 1 3 y c a b c x y 1 1 a 2 2 b 3 3 c c1 lt df 1 1 1 2 3 class c1 1 inte
  • 在 Ruby 中转义字符串

    我想在某些 Ruby 中插入以下内容作为变量的值 lt gt 用双引号将其引起来是行不通的 那么是否有一个很好的 escape until the end 之类的东西可用 不要使用多种方法 保持简单 转义 反斜杠和双引号 irb main
  • TypeScript - 如何从方法的参数推断类泛型类型?

    我正在尝试从稍后调用的方法参数中输入类泛型 在我们调用带有泛型参数的方法之前 类的泛型类型是不知道的 然后 对于任何其他方法 将传递泛型类型 老实说 对我来说 这似乎是一个非常复杂的功能 我什至不确定 TypeScript 是否有办法做到这
  • Ruby on Rails 中的垃圾收集器?

    我尝试在 Google 上搜索很多有关 Rails 垃圾收集器的信息 但没有得到可靠的答案 有谁有资源来展示如何垃圾收集是在 Rails 中实现的吗 我们怎样才能控制它呢 Rails 是一个框架 而不是一种语言 Rails 背后的语言称为
  • ruby on Rails“usr/bin/env:‘ruby2.3’:没有这样的文件或目录”

    我打字时遇到问题bundle exec rake db migrate在终端上 然后我收到了类似 usr bin env ruby2 3 No such file or directory 的结果 我遇到了同样的问题 但是运行时 rails
  • 为什么我不能“string”.print()?

    我的理解print 在 Python 和 Ruby 以及其他语言 中 它是字符串 或其他类型 上的方法 因为它的语法非常常用 打印 嗨 works 那么为什么不呢 hi print 在 Python 中或 hi print在红宝石工作 当你
  • 核心中的 find_by() 和 FinderMethods 中的 find_by() 有什么区别?

    目前我正在开发一个 gem 它会覆盖 ActiveRecordswhere 通过研究 我偶然发现了两种不同的find by实施 一个是在core https github com rails rails blob 5 0 stable ac
  • Ruby 空白:{ :a => 1 } 比 {:a => 1} 更好吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 看看其他人的代码 在花括号块内包含额外的空格似乎很常见 这是有原因的吗 对我来说 这似乎增加了额外的击键 从而增加了丑陋 特别是当事情嵌套时 l
  • Rails 中的代码片段应该放在哪里?

    我有这个代码片段 可以为 POST 生成签名 它的细节并不重要 但我想知道的是 由于它不是与模型相关的代码块 所以它确实可以在任何地方使用 在控制器中 在模型中 在视图助手中 即使在视图中 因此 我不确定在哪里 甚至更大的问题是 一旦将其放
  • Capybara::ElementNotFound:无法找到字段“标题”

    我无法解决这个问题 请帮我 它给了我找不到元素的错误 规格 功能 todos create spec rb require spec helper describe Creating todos do let user FactoryGir
  • SwiftUI - 使用“ObservableObject”和@EnvironmentObject 有条件地显示视图

    我想在我的应用程序中有条件地显示不同的视图 如果某个布尔值为 true 则将显示一个视图 如果为 false 将显示不同的视图 该布尔值位于 ObservableObject 类中 并根据将要显示的视图之一进行更改 PracticeStat
  • __del__ 上的 Python 属性错误

    我有一个 python 类对象 我想分配一个类变量的值 class Groupclass Workerclass worker class count 0 def init self initialize time Groupclass c
  • 当你不继承Rails 4中的ApplicationController时,如何包含respond_to?

    我在 Rails 4 1 2 应用程序中有一个 API 控制器 它不继承自应用程序控制器 我试图包含 respond to 方法并得到一个方法未定义的错误 所以然后我需要在顶部的操作包 如下所示 require action pack cl
  • 正则表达式检查 ruby​​ 中的字母数字字符串

    我正在尝试验证 ruby 中的字符串 任何包含空格 下划线或任何特殊字符的字符串都将无法通过验证 有效字符串应仅包含字符 a zA Z0 9 我的代码看起来像 def validate string regex a zA Z0 9 if s
  • Ruby,通过 SSH 和 LOG 逐一运行 linux 命令

    我想用 Ruby 女巫 net ssh 编写代码 在远程 Linux 机器上一一运行命令并记录所有内容 在 Linux 机器上称为命令 stdout 和 stderr 所以我写函数 def rs ssh cmds cmds each do
  • Ruby on Rails 中的枚举

    我是一名 C 程序员 我正在研究 ruby on Rails 但我可能在心态或其他方面遇到了一些麻烦 我有一个投票对象 该对象可以是赞成 中立或反对 我通常会让投票对象有一个像这样的字段 private VoteEnum voteEnum
  • 如何清除 ruby​​ 中 rspec 测试之间的类变量

    我有以下课程 我想确保类 url 只为所有实例设置一次 class DataFactory url nil def initialize begin if url nil Rails logger debug Setting url url
  • 是否可以打开包含类的 .txt/.java 文件,并对其使用反射?

    我的意思是 将其中包含 Java 代码的文件作为类而不是文件打开 所以基本上我想 gt 在自己编写的Java应用程序中打开纯文本文件 txt log java gt 识别文件中的类 例如 public class TestExample p
  • 回形针:从带扩展名的 url 上传

    我想通过 S3 存储上的回形针从 URL 上传图片 我与 Ruby 1 9 3 Rails 3 2 6 paperclip 3 1 3 aws sdk 1 3 9 我有我的图片模型 class Asset has attached file
  • 直接或通过包含定义嵌套类

    假设我正在为我的家庭存储系统建模 我有很多不同类型的Container 而且我发现其中很多都有装饰品 因此我为这种常见情况设置了一些辅助代码 我的容器中有我的Mantlepiece and my Bookcase 我只在前者上存放装饰品 而

随机推荐

  • 如何使用 Spotify SDK 和 Swift 3 正确处理令牌刷新。错误代码=3840

    tl dr我收到 JSON text did not start with array or object and option to allow fragments not set 如果我想接收令牌并且No refresh token a
  • 从现有 docker 容器中删除端口绑定

    目前我有一个用以下命令创建的容器 docker run detach name gitlab app restart always publish 192 168 0 200 80 80 publish 192 168 0 200 22 2
  • 步骤向导形式

    我正在使用角度动态表单进行角度应用程序 我需要将表单分成两部分 其中我有输入字段firstname and lastname在第一页 然后单击下一个按钮 其中的子项email and dropdown需要加载 Html
  • window.URL.revokeObjectURL() 不会立即释放内存(或根本不释放内存)?

    我正在制作一个 html 界面 通过拖放和多个选择文件将图像上传到服务器上 我想在将图片发送到服务器之前显示它们 所以我首先尝试使用FileReader但我遇到了一些问题 比如这个帖子 https stackoverflow com que
  • CSS 框阴影不是真正透明的?

    这是一叠 8 个白色框阴影 底部为蓝色背景渐变 其他地方为白色背景 按照我的逻辑 白色背景上的白色框阴影应该会产生白色 但显然有一个灰色的边缘将白色 div 与白色背景的其余部分分开 生成这个的 css 是 content sidebar
  • 使用 SQLITE 为 Google App Engine 进行本地 Django 开发?

    我正在使用 Google App Engine 在 Django 中进行开发 对于生产 我计划使用 Google Cloud SQL 但对于本地开发 我想使用简单的 SQLITE 谷歌教程 https developers google c
  • 无法使用 NHibernate 加入分布式事务

    我在单元测试中发现一个问题 Oracle 抛出异常并显示消息 无法加入分布式事务 我们正在使用 ODP net 和 NHibernate 在嵌套事务内对数据库进行一定数量的提交后 就会出现此问题 令人烦恼的是 这在持续集成服务器 Windo
  • 在嵌套匿名结构上忽略 C++ 私有修饰符

    以下示例代码在 Visual C 中编译得很好 class Test private struct struct int privateData int main int char Test test test privateData 0
  • 使用 PHP + XDEBUG 时在 VS Code 中显示长字符串

    我正在使用 VS Code 进行 PHP Web 开发 带有 XDEBUG 的 VS Code 在显示字符串值变量方面似乎受到严重限制 变量和监视窗口仅限于窗口宽度或第一个换行符 您可以通过评估字符串在调试控制台中显示更多内容 但最多只能超
  • 找不到类“android.app.Notification$Builder”

    我已将 android support v4 jar 添加到我的项目库中 但我收到此错误 Could not find class android app Notification Builder referenced from metho
  • SVG 变换旋转 90、180 或 270 度,在 Safari iOS 10 中不适用于圆形

    我想通过设置使用 SVG 圆形元素创建一个圆环图stroke dasharray和变化的stroke dashoffset SVG 元素需要旋转 270 或 90 度才能使图表 条 从顶部开始 这是代码 http jsfiddle net
  • 有没有办法使用 std textio 在 vhdl 中多次读取文件?

    我试图了解如何在 vhdl 中读取文件 如果我打开一个文件 通读它 测试文件结尾 关闭文件 然后重新打开该文件 然后再次开始读取 它会从开头开始吗 文件 非常感谢 向 VHDL 语言的权威寻求答案 IEEE 标准 1076 2008 5 5
  • C++ Win32 API 删除带进度条的文件

    使用Windows API 有没有办法删除一个大文件 比如说1GB 并以某种方式监控进度 我确信这是可能的 但我不知道从哪里开始 编辑 应该更具体 我想将文件移动到回收站 并显示类似于探索的进度条 尽管我可能希望在控制台或其他东西中显示进度
  • Wamp 2.2 安装 PEAR

    我的操作系统是Windows 7 我的电脑上安装了 WAMP2 2 然后我尝试安装PEAR 然而 我找不到我的go pear bat文件在我的 wamp 目录中 美好的 我在这里下载 http pear php net go pear ph
  • 将大文件从 Google Cloud Storage 加载到 Google Cloud Functions 中?

    有没有办法将大文件 gt 100MB 从 Google Cloud Storage 加载到 Google Cloud Functions 中 我在他们的书中读到quotas https cloud google com functions
  • 从 bash 脚本更改导出变量的值

    我从 bash shell 执行了以下操作 export myPath home user dir 然后我通过从 shell 和 bash 脚本内部 回显 该值来验证该值 两者都工作得很好 然后我尝试从这样的脚本内部设置该变量的值 myPa
  • 在 Django 中存储用户活动

    我正在寻找存储用户的活动 但我不确定将其存储在哪里 我不认为数据库是一个选择 因为它会非常大 我想知道 Facebook Dropbox 等网站如何记住特定用户的所有活动 并且它不能存储在会话中 因为这不是特定于会话的而是特定于用户的 请帮
  • 将响应从 AFHTTPRequestOperation 传递到 UIWebview

    我的代码向服务器发出两个请求 一种是直接进入 uiwebview 另一种是通过 AFHTTPRequestOperation 我想使用 AFHTTPRequestOperation 并将响应传递到我的 uiwebview 中 将响应传递到
  • 通过 Producer 类将 RequestScoped CDI Bean 注入 ApplicationScoped CDI Bean

    本文介绍了您可以将 RequestScoped beans 注入 ApplicationScoped beans 并且客户端代理将在请求期间指向正确的实例 较短范围的 Bean 实例注入到 CDI 中较大范围的 Bean 实例中 它是如何工
  • 如何检查 ruby​​ 中是否定义了私有方法

    我能找到的最接近的是在 Ruby 中 如何检查方法 foo 是否已定义 https stackoverflow com questions 2348521 in ruby how do i check if method foo is de