【问题标题】:Ruby undefined method `write' for IO:Class (NoMethodError)IO:Class (NoMethodError) 的 Ruby 未定义方法“write”
【发布时间】:2011-11-26 13:24:29
【问题描述】:

当我运行我的 ruby​​ 文件时

ruby test.rb

只有一行:

IO.write("testfile.txt","123")

我明白了

test.rb:1:in `<main>': undefined method `write' for IO:Class (NoMethodError)

【问题讨论】:

    标签: ruby io nomethoderror


    【解决方案1】:

    嗯,你期待什么样的答案? IO 没有任何名为 write 的类方法。最多它有binwrite 和一个instance 方法#write

    所以要么你使用binwrite (http://rubydoc.info/stdlib/core/1.9.3/IO.binwrite) 要么你使用File 类并完成

    File.open("testfile.txt", "w") { |f| f << "123" }
    

    编辑:显然有一个从 Ruby 1.9.3 开始的 IO.write 方法。但是,在 1.9 或 1.8 的任何早期版本中都没有这种方法。

    【讨论】:

    • 谢谢!我正在阅读 1.9.3 ruby​​doc 并使用 ruby​​ 1.9.2,更新后它现在运行良好。如何查看在哪个版本引入了方法?
    • 文档不包含任何线索。唯一的方法是阅读新版本的变更日志,或者那些汇总的“发生了哪些变化”的博客文章,即使这些可能不完整。
    • @cande apidock.com 非常有帮助。它显示添加/更改方法的时间,还允许人们留下有关其使用的 cmets/提示。对于 IO.write 其apidock.com/ruby/v1_9_3_125/IO/write/class
    【解决方案2】:

    有几个问题,

    1. IO 没有类方法 write,这就是您看到异常的原因
    2. 如果你想写入文件,你应该使用 File 类

      File.open("testfile.txt", "w") 做 |file| 文件.write("123") 结束

    我认为您可能刚刚开始使用 Ruby,因此阅读一本关于 Ruby 的书可能是个好主意,该书将展示其中的一些基础知识。我使用过 David Flanagan 和 Matz 的“The Ruby Programming Language”,但也有不少人使用过所谓的 Pickaxe 书或 Dave Thomas、Chad Fowler 和 Andy Hunt 的“Programming Ruby”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-16
      • 2023-03-06
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多