Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我无法将IO.read理解为ruby参数_Ruby_Io - Fatal编程技术网

我无法将IO.read理解为ruby参数

我无法将IO.read理解为ruby参数,ruby,io,Ruby,Io,我正在检查RubyQuike上的madlib练习,遇到了一行我不理解的内容: madlib = Madlib.new(IO.read(ARGV.shift)) 我在谷歌上搜索了大量内容,但没有发现任何有用的东西。 我不知道该怎么办 madlib = Madlib.new(IO.read(ARGV.shift)) answers = [] madlib.list_questions do |i, q| print "Give me " + q + ": " answers[i] =

我正在检查RubyQuike上的madlib练习,遇到了一行我不理解的内容:

madlib = Madlib.new(IO.read(ARGV.shift))   
我在谷歌上搜索了大量内容,但没有发现任何有用的东西。 我不知道该怎么办

madlib = Madlib.new(IO.read(ARGV.shift))
answers = []
madlib.list_questions do |i, q|
  print "Give me " + q + ": "
  answers[i] = gets.strip
end
answers.each_index {|i| madlib.answer_question(i, answers[i]) }
puts madlib.show_result
短版 它将指定为参数的文件内容(
ruby script.rb file.txt
)作为单个字符串发送到
Madlib.new

较长版本 ARGV.shift
ARGV.shift
ruby script.rb
之后的第一个参数。用于:

ruby script.rb some_text_file.txt
它是
一些文本文件.txt

请注意,
ARGV.shift
还会从
ARGV
中删除第一个参数。下次调用
ARGV.shift
时,它将返回
ruby script.rb
之后的第二个参数

IO.read()
IO.read('file.txt')
读取
file.txt
的全部内容,并将其作为字符串返回

由于
File
继承自
IO
,并且这里的示例读取文件,因此也可以将其写入
File.read(filename)

Madlib.new()
IO.read
返回的字符串被发送到
Madlib.new

短版本 它将指定为参数的文件内容(
ruby script.rb file.txt
)作为单个字符串发送到
Madlib.new

较长版本 ARGV.shift
ARGV.shift
ruby script.rb
之后的第一个参数。用于:

ruby script.rb some_text_file.txt
它是
一些文本文件.txt

请注意,
ARGV.shift
还会从
ARGV
中删除第一个参数。下次调用
ARGV.shift
时,它将返回
ruby script.rb
之后的第二个参数

IO.read()
IO.read('file.txt')
读取
file.txt
的全部内容,并将其作为字符串返回

由于
File
继承自
IO
,并且这里的示例读取文件,因此也可以将其写入
File.read(filename)

Madlib.new()
IO.read
返回的字符串被发送到
Madlib.new

确实很简单

IO.read
用于读取一个文件,该文件的名称位于数组ARGV中,其中包含传递给此Ruby程序的参数

顺序是:

  • 传递包含文件名的参数。此参数将位于ARGV数组中
  • ARV.shift
    返回ARGV数组的第一个元素,即文件名
  • 然后,
    IO.read
    接收该参数,读取相应的文件并返回其内容;以及
  • 最后,
    Madlib.new
    接收这些内容,并基于它们创建一个Madlib.new实例

  • 正如您所看到的,传递给
    Madlib.new
    的实际参数是
    IO.read
    的结果,而不是
    IO.read
    本身。

    确实很简单

    IO.read
    用于读取一个文件,该文件的名称位于数组ARGV中,其中包含传递给此Ruby程序的参数

    顺序是:

  • 传递包含文件名的参数。此参数将位于ARGV数组中
  • ARV.shift
    返回ARGV数组的第一个元素,即文件名
  • 然后,
    IO.read
    接收该参数,读取相应的文件并返回其内容;以及
  • 最后,
    Madlib.new
    接收这些内容,并基于它们创建一个Madlib.new实例

  • 正如您所看到的,传递给
    Madlib.new
    的实际参数是
    IO.read
    的结果,而不是
    IO.read
    本身。

    谢谢,我终于能够让它在我的机器上工作了。很高兴有人来解释…谢谢,我终于可以让它在我的机器上工作了。很高兴有人来解释…谢谢,Ed。非常有帮助!谢谢你,Ed。非常有帮助!你的问题不清楚。事实上,你连一个问题都没有!只有一个声明。你真正的问题是什么?你的问题不清楚。事实上,你连一个问题都没有!只有一个声明。你真正的问题是什么?