为什么 S4 类的 print 调用 `show` 时没有命名空间?

2024-04-03

我有一个包裹shinyjs带有一个名为show。今天,一位用户向我报告,这在使用 S4 对象时会带来问题,因为“打印”S4 对象使用show方法,它在附加时被我的包屏蔽。

Example:

library(shinyjs)
setClass("testS4Object",
         representation(
           ID = "numeric",
           Name = "character"
         ),
         prototype(
           ID = NA_real_,
           Name = NA_character_
         )
)
x = new("testS4Object")
x

出现错误是因为当我们打印的值x,似乎在呼唤show在幕后,但它正在使用shinyjs::show代替methods::show。通过印刷methods::show(x)明确地,问题就消失了。但我有点困惑为什么默认情况下 S4 打印系统调用show没有命名空间 - 这不是很危险,而且这个错误的发生也不是我的包的错吗?

拥有与中的函数同名的函数被认为是一个非常糟糕的主意methods?我的想法是S4系统应该知道调用自己的show函数或继承的 S4show功能。

EDIT:我问 Hadley 他的想法,他似乎也认为这可能是 R 中的一个错误,我给 r-devel 发了电子邮件以征求他们的意见


该问题已报告给 R 核心团队,并于 2015 年 7 月 20 日在 SVN 提交 # 68702 中得到修复。这是修复方法 https://github.com/wch/r-source/commit/38ea40dcd0353af16d35296ee621338c49ae48c9

该修复将在 R 3.3.0 中提供

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

为什么 S4 类的 print 调用 `show` 时没有命名空间? 的相关文章

随机推荐

  • Android 中的文本转语音完成后立即播放音频文件

    我正在尝试开发一个 Android 应用程序 一旦文本到语音完成 就必须播放音频文件 这个怎么做 如果我没有理解错的话 您想使用文本转语音来读取一些文本 同时将语音音频存储到手机中 然后再播放音频 你检查过吗录音测试 http develo
  • Mesos 任务 - 无法接受套接字:未来已丢弃

    我只是想将 mesos 版本从 1 0 3 升级到 1 3 1 Chronos 调度程序能够通过 mesos 调度作业 该作业运行良好并且能够查看 mesos 标准输出日志 但是 仍然在 mesos stderr 日志中看到以下内容 doc
  • 使用 MySQL 进行 SVN 身份验证

    我正在尝试通过 MySQL 设置每个存储库 SVN 身份验证 但遇到一些问题 首先 两者有什么区别mod authn dbd and mod auth mysql 其次 我已经有一个 MySQL 数据库设置 其中包含用户 组和权限的表 是否
  • 如何从 Amplify 生成的 Lambda 函数中访问其他 AWS 资源?

    我一直在使用 AWS Amplify 作为 AWS 的新手 我非常喜欢 Amplify 如何在 AWS 上为我配置必要的资源和 IAM 角色 我的问题是关于将 Lambda 与 GraphQL 结合使用 按照文档 我可以创建一个自定义 Gr
  • 可以使用反射覆盖 IEnumerable 中的项目吗?

    不顾任何合理的理由这样做 只是出于好奇是否可以获取任何给定的 IEnumerable T 并覆盖其中包含的项目 例如 给定 IEnuemrable String 是否可以完全替换 IEnumerable 中的所有字符串 正如其他人所说 如果
  • 背景尺寸:包含

    我想要一个带有背景图像的 div 保持图像的纵横比 固定高度为 500px 并且我不希望该 div 的背景上有 填充 这可以吗 我可以获得一个具有固定高度和保持宽高比的背景图像的 div div style background url s
  • 如何使用 Google 字体更改 Bootstrap 默认字体系列?

    我正在创建一个博客网站 我想更改 Bootstrap 字体 在 header 中的 import CSS 中我添加了这个字体 如何使用它作为我的引导程序默认字体 首先 你不能通过这种方式将字体导入到 CSS 中 您可以在 HTML 头中添加
  • Swift 中的元组是否可以完全替代 C# 中的匿名类型

    Like C 中的匿名类型 http msdn microsoft com en us library bb397696 aspx 新推出的语言 Swift 中的元组可以做 C 中的匿名类型可以做的事情吗 在学习 swift 时 我发现了一
  • 如何打开图像并在其上绘图

    我正在创建一个应用程序 人们可以在其中绘制草图并保存到图库中 这我已经完成并且运行良好 我希望能够从画廊中获取一张图像并能够在其上进行绘制 我已经能够打开图库来选择图像 但我无法弄清楚如何将该图像嵌入到画布上然后进行绘制 但问题是 它打开了
  • 存储过程返回 int 而不是结果集

    我有一个包含动态选择的存储过程 像这样的事情 ALTER PROCEDURE dbo usp GetTestRecords p1 int 0 p2 int 0 groupId nvarchar 10 0 AS BEGIN SET NOCOU
  • ES6 类中的 ES6 函数、箭头函数和“this”[重复]

    这个问题在这里已经有答案了 class App extends Component constructor props onChange e gt this setState term e target value onSubmit e e
  • CouchDB 和 Couchbase 有什么区别?

    之间有什么本质区别吗CouchDB http couchdb apache org and 沙发底座 http www couchbase com 我认为CouchDB和Couchbase Server之间有一些本质的区别需要指出 我不会写
  • 在自定义大小的浏览器窗口中使用批处理文件打开链接

    我想创建一个批处理文件 它将打开一个应用程序和一个链接 我们的想法是在桌面上的快捷方式文件中使用此批处理文件 以便一键单击应用程序和 URL 链接示例 www google com 应打开 但浏览器大小应自定义 例如 600 600 请建议
  • Spark中saveAsTextFile时如何命名文件?

    在 Spark 版本 1 5 1 中另存为文本文件时 我使用 rdd saveAsTextFile
  • 使用Robolectric时如何加载.so?

    W 环境 EXTERNAL STORAGE 未定义 回到默认状态 java lang UnsatisfiedLinkError com autonavi amap mapcore MapCore nativeNewInstance Ljav
  • 使表格行的背景延伸到表格边界之外

    我目前正在尝试创建一个带有斑马条纹的表格 其中条纹的背景颜色延伸到屏幕的整个长度 但行的实际内容保留在表格的边界内 更具体地说 我正在使用 Bootstrap 所以我想要的是表行的内容就像它们位于 container 本质上 我正在尝试创建
  • ASP.Net MVC 显示格式

    在我的模型中 我的属性之一有以下 DataAnnotations Required ErrorMessage DisplayFormat DataFormatString 0 d DataType DataType Date public
  • ant/Jenkins:move不支持“安静”属性

    我的构建脚本执行
  • 如何使用主干单页应用程序在 MVC4 中测试 AntiForgeryToken

    我在获取 Microsoft 的 MVC 时遇到问题 ValidateAntiForgeryToken 使用使用 Marionette Backbone 编写的单页应用程序 SPA 问题似乎是MVC ValidateAntiForgeryT
  • 为什么 S4 类的 print 调用 `show` 时没有命名空间?

    我有一个包裹shinyjs带有一个名为show 今天 一位用户向我报告 这在使用 S4 对象时会带来问题 因为 打印 S4 对象使用show方法 它在附加时被我的包屏蔽 Example library shinyjs setClass te