Ruby 和修改 Float 实例的 self

2024-03-23

我想更改浮点实例的自身值。

我有以下方法:

class Float
  def round_by(precision)
    (self * 10 ** precision).round.to_f / 10 ** precision
  end
end

我想添加 round_by!方法将修改自我价值。

class Float
  def round_by!(precision)
    self = self.round_by(precision)
  end
end

但我收到一个错误,说我无法改变自我的价值。

任何想法 ?


你不能改变的值self。它总是指向当前对象,你不能让它指向其他对象。

当您想要改变对象的值时,可以通过调用其他改变方法或设置或更改实例变量的值来实现,而不是尝试重新分配self。然而在这种情况下,这对你没有帮助,因为Float没有任何变异方法,并且设置实例变量不会给你带来任何好处,因为默认的浮点操作都不受任何实例变量的影响。

所以底线是:你不能在浮点数上编写变异方法,至少不能以你想要的方式。

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

Ruby 和修改 Float 实例的 self 的相关文章

随机推荐

  • 如何使用 16 或 24 列的 bootstrap

    我需要一些帮助将 bootstrap 2 0 4 设置为 16 或 24 列 而不是默认的 12 列 我无法理解我做错了什么我尝试了 bootstrap 站点上的自定义选项 并尝试更改变量中的网格变量 less 文件并使用 Crunch 重
  • 硒批判

    我只是想听听运行 Selenium 的人的一些意见 http selenium openqa org http selenium openqa org 我对 WaTiN 有很多经验 甚至还为它写了一个录音套件 我让它生成了一些结构良好的代码
  • 寻找 Lua 4.1 alpha

    我正在帮助为一款相当老的游戏 孤岛惊魂 开发多人模式 我想编译lua代码 但游戏使用版本4 1 alpha 我在任何地方都找不到 lua 4 1 alpha tar gz http www lua org work old lua 4 1
  • 适用于 Windows 的 Docker.io [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在读一个关于 docker 的好问题 答案概述了docker 实现细节 https stackoverflow com questio
  • ReSharper 忽略 TODO 资源管理器上的某些文件夹

    我在我的解决方案中使用 SignalR 他们的 Nuget 包引入了 java 脚本 没关系 但问题是 那里有待办事项 现在显示在我的待办事项列表下 因此 当 ReSharper 扫描 TODO 时 我想忽略特定文件夹或文件 我尝试从 代码
  • Attribute.IsDefined 看不到应用于 MetadataType 类的属性

    如果我通过以下方式将属性应用于分部类元数据类型属性 http msdn microsoft com en us library system componentmodel dataannotations metadatatypeattrib
  • Android 中失败 [INSTALL_FAILED_USER_RESTRICTED:无效的 apk]

    我使用的是Android Studio 3 0 1 当我尝试运行应用程序时 INSTALL FAILED USER RESTRICTED 无效的 apk 发生错误 我还禁用了即时运行 我再次运行应用程序 但出现同样的错误 04 04 10
  • Java 调用 GCC 编译的 C 库可以工作,但使用 G++ 编译时会失败

    我尝试调用这个最小的 C 代码 文件TEST c void Java TEST run 从这个Java代码 文件Example java public class Example public static void main String
  • 在网络应用程序中对数据进行数字签名

    我有一个 Web 应用程序 其中一些数据 不是文件 需要使用 PKI 私钥进行数字签名 PKI 证书和私钥将位于 USB 加密令牌中 当插入 USB 插槽时 该加密令牌会向浏览器注册证书 这减轻了使用证书进行身份验证的痛苦 因为我是通过在应
  • MSB3245:无法解析此引用。无法找到程序集

    当我使用 Azure DevOps 构建代码时 收到以下错误消息 同样的代码 当我在本地构建时 我能够成功构建它 警告 MSB3245 无法解析此引用 无法找到程序集 Azure Core Version 1 20 0 0 Culture
  • 异步方法中的 Await 与 Task.Result [重复]

    这个问题在这里已经有答案了 执行以下操作有什么区别 async Task
  • Prolog:消除查询中的重复

    我一直在尝试编写一个简单的代码 其行为方式如下 hasCoppiesOf X a b a b a b a b X a b X a b a b X a b a b a b a b And hasCoppiesOf a b a b a b a
  • 未处理的异常:MissingPluginException(在通道 flutter_barcode_scanner 上未找到方法 scanBarcode 的实现)

    我正在尝试通过以下方式创建条形码扫描仪 https pub dev packages flutter barcode scanner install https pub dev packages flutter barcode scanne
  • 在 RESTful API 中存储身份验证令牌而不使用 HTTP 会话

    我正在构建一个具有多个服务器的 RESTful API 我想知道是否可以将访问令牌存储在中央数据库服务器中 然后对于每个请求 通过查询数据库然后执行操作来验证此访问令牌是否有效给予 如果我使用会话来完成这项工作 它会变得非 RESTful
  • Linq to Nhibernate 批量更新查询等效项?

    不确定我是否在这里遗漏了任何东西 基本上 我正在寻找 Linq to Nhibernate 来执行以下 SQL 语句 update SomeTable set SomeInteger SomeInteger 1 where SomeInte
  • 有人可以帮助我一些 JDBC 初学者吗?

    作为刚接触 Java 的 C 开发人员 我认为简单地显示一些 C 代码可能是最简单的 这样我就可以看到等效的 Java JDBC 调用是什么 String myConnectionString String mySql select nam
  • Angular 中令牌验证的最佳方法

    在使用 AngularJS 进行的 Web 应用程序开发中 使用令牌验证来进行身份验证 那么进行此验证的最佳方法是什么 例如 每次进行路由转换时都验证令牌 为此 每次我想验证时 我都必须拨打休息电话 通过一次休息调用仅验证令牌一次 然后将令
  • document.cookie 未返回所有 cookie

    我正在尝试使用以下方式读取我的域设置的所有 cookiedocument cookie我注意到 它只返回 csrftoken 和另一个值 我的目标是阅读sessionid从饼干 please see the below screenshot
  • 如何交互式地挑选

    我已经在一个分支上黑了一段时间了 这个分支很快就不会被合并了 但无论如何 我还是想将一些提交合并到 master 中 有没有办法获得交互式的挑选 它将显示提交及其更改 然后让我选择我真正想要挑选的内容 您可以使用提交图来做到这一点 gitk
  • Ruby 和修改 Float 实例的 self

    我想更改浮点实例的自身值 我有以下方法 class Float def round by precision self 10 precision round to f 10 precision end end 我想添加 round by 方