6

私はRubyスクリプトを見ていましたが、に出くわしscript = $0ました。私はいくつかのグーグルをしましたが、これが何をするかについて明確な答えを見つけられませんでした。メモリよりも大きいファイルを読み取ることからあなたを保護すると私は信じています、それは正しいですか?

おかげで、私はあなたが文脈でそれを見ることができるように以下の完全なスクリプトを持っています:

# Takes the name of a file as an argument and assigns to filename 
filename = ARGV.first 
script = $0

puts "We're going to erase #{filename}."
puts "If you don't want that, hit CTRL-C (^C)."
puts "If you do want that, hit RETURN."

print "? "
STDIN.gets

puts "Opening the file..."
target = File.open(filename, 'w')

puts "Truncating the file. Goodbye!"
target.truncate(target.size)

puts "Now I'm going to ask you for three lines."

print "line 1: "; line1 = STDIN.gets.chomp()
print "line 2: "; line2 = STDIN.gets.chomp()
print "line 3: "; line3 = STDIN.gets.chomp()

puts "I'm going to write these to the file."

target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")

puts "And finally, we close it."
target.close()
4

2 に答える 2

13

$0Rubyのグローバル変数の1つです。ここから:

$0-実行されているスクリプトの名前が含まれます。割り当て可能である可能性があります。

于 2012-04-28T15:19:27.430 に答える
1

ああ、古典的なゼッドショーの本!lol $ 0は、最初の引数の前にコマンドラインで入力を取得します。したがって、これをrubyインタープリターを使用してコマンドラインで実行すると、「ruby(fileName)test.txt」を入力すると、$ 0でfileNameが取得され、変数「script」に保存されます。プログラムの後半で使用するので、なぜここでそれを行うのかはよくわかりませんが、それだけです。これをテストする方法は、プットを使用して画面に印刷することです。おそらく、このコードを追加して、コードのどこかに自分で表示します。

puts "The $0 has saved #{script} to it, I wonder where it got that."

ファイルに名前が付けられることを確認してください。

于 2015-08-25T22:31:59.763 に答える