我分析我的朋友的代码,我看到这个小片段:
n,a=*$<
我想不通这是什么意思 - 我搜索了很多网站,但他们似乎并不承认特殊字符。
我分析我的朋友的代码,我看到这个小片段:
n,a=*$<
我想不通这是什么意思 - 我搜索了很多网站,但他们似乎并不承认特殊字符。
$<
是ARGF。从红宝石的标准文档:
ARGF是一个设计用于处理作为命令行参数给出的文件或通过STDIN传入的脚本的流。
一个超级好的解释here
*
是图示操作。
您正在分配到a
和n
此时ARGF/STDIN内部有什么。
实施例:
[email protected] ~$ cat a.txt
a
b
c
[email protected] ~$ cat a.rb
a, n = *$<
puts "a is: #{a}"
puts "n is: #{n}"
[email protected] ~$ ruby a.rb a.txt
a is: a
n is: b
更具体地说,'*'调用'ARGF#to_a',它是['ARGF#readlines']的别名(http://ruby-doc.org/core-2.4.1/ARGF.html#method-i- readlines),所以'n,a = * $ <'相当于'n,a = ARGF.readlines' – Stefan
'$ <'是ARGF和''是图示。 – radubogdan
ARGF是什么意思? – Ivy
也请查看https://stackoverflow.com/a/3747135/846163并在irb中运行该代码段。代码采用STDIN的输入,并将前两行写入'n'和'a'。 – sschmeck