【问题标题】:Is calling puts without arguments bad practice?不带参数的看跌期权是不好的做法吗?
【发布时间】:2011-02-16 14:20:31
【问题描述】:

以下是 RubyMine 3.1 中的小屏幕截图。我刚开始学习Ruby。这里的代码来自于 atomicobject.com 的 Presenter-First MVP C# 代码生成器。

我正在使用这个项目和一本书来学习 Ruby。 putsdocumentation 表明它至少需要一个参数。然而,这段代码看起来“有点合法”有两个原因:

  1. 当我执行该代码时,代码似乎可以正常工作 通过调试器逐步完成。
  2. Searching online,甚至 here at SO,表明 puts 没有参数会创建一个换行符。

但是,这样做是不好的做法(因此出现 RubyMine 警告)?我正在查看的代码来自 2006 年。如果有任何问题,我将使用 Ruby 1.9.2 运行它。

【问题讨论】:

    标签: ruby rubymine


    【解决方案1】:

    这很好,因为puts 为第一个参数提供了“默认”值:

    def puts(obj='', *arg)
    

    至于 RubyMine,它对我没有显示任何错误。您是否会在代码中的其他地方定义方法puts?你可以cmd+点击它,去定义。

    无论如何,如果您能够在一个干净的新项目中重现问题,您可以免费向 JetBrains 提交错误报告。

    【讨论】:

    • @Nikita Rybak,当我单击“转到定义”时,我得到这个:def puts(obj, *smth) in kernel.rb。这个 kernal.rb 方法是一个用于索引的存根,文件顶部的注释说:“这是一个机器生成的存根,使用 stdlib-doc 用于 module Kernel 使用的 Ruby 源:Ruby-1.9。 1 p0 由 IntelliJ Ruby Stubs Generator 于 2009 年 6 月 17 日星期三 12:55:08 +0400 创建。”
    • @Matt 这很有趣...我确实认为某处有默认分配,因为调用没有它的方法(例如,print)将使nil 出现在我面前。
    • @Matt 如果你有空闲时间,你仍然可以在 jetbrains 开一张票,看看他们怎么说。
    • @Nikita,我会尝试用一个空项目重新创建问题,如果成功,我会开一张票。感谢您的帮助。
    • @Nikita,他们计划在 3.1.1 中解决这个问题:youtrack.jetbrains.net/issue/RUBY-7846
    【解决方案2】:

    不,在源代码和输出中创建物理换行符会很有帮助,就像您已经看到的那样,puts 完全能够接受零参数。

    就个人而言,如果我要创建多行输出,我更喜欢使用here-doc syntax

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-11
      • 2020-09-07
      • 1970-01-01
      相关资源
      最近更新 更多