gpt4 book ai didi

Ruby 'gets' 表现怪异?

转载 作者:太空宇宙 更新时间:2023-11-03 17:16:06 24 4
gpt4 key购买 nike

我正在编写这个程序来管理点文件,并且获取的行为似乎不像往常那样,而且我无法通过谷歌追踪相关信息。

#!/usr/bin/env ruby

@filename = ''

unless $*[0].nil?
# Storing filename (and adding dot)
@filename = "."+$*[0].to_s
else
# No filename given, exit and print to STDERR
abort("No filename specified")
end


@file_path = File.expand_path("~/#{@filename}")

if File.exists?(@file_path)

print "Enter something: "
gets
puts $_

end

但是,程序像这样在“gets”行崩溃了

$ ruby ./link.rb bash_profile
Enter something: /Users/krystah/repos/backpack/dotfiles/link.rb:24:in `gets':
No such file or directory - bash_profile (Errno::ENOENT)
from /Users/krystah/repos/backpack/dotfiles/link.rb:24:in `gets'
from /Users/krystah/repos/backpack/dotfiles/link.rb:24:in `<main>'

最佳答案

来自fine manual :

gets(sep=$/) → string or nil
gets(limit) → string or nil
gets(sep,limit) → string or nil

Returns (and assigns to $_) the next line from the list of files in ARGV (or $*), or from standard input if no files are present on the command line.

ARGV 中确实有东西,所以 gets 将尝试从名为 'bash_profile' 的文件中读取,然后提示没有这样的文件。您可能想要更明确地说明您从哪里阅读:

print "Enter something: "
$stdin.gets
puts $_

这实际上是一个非常有趣的问题。 gets(以及 Kernel 中的许多其他类似函数的东西)通常用于单行代码,因此它们的行为以令人惊讶的方式专门化。一旦您了解了它们的预期目的,这种奇怪的行为就不会那么令人惊讶了。

关于Ruby 'gets' 表现怪异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20790980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com