我正在分析我的朋友的代码,看到了这段小代码:
n,a=*$<
我无法理解这是什么意思 - 我在许多网站上搜索,但它们似乎无法识别特殊字符。
n,a=*$<
我无法理解这是什么意思 - 我在许多网站上搜索,但它们似乎无法识别特殊字符。
$<
是ARGF。根据Ruby的标准文档:
ARGF是为在脚本中处理作为命令行参数给出或通过STDIN传递的文件而设计的流。
这里有一个超好的解释(链接)
*
是展开操作符。
你正在将ARGF/STDIN中此时的内容分配给a
和n
。
示例:
raducroitoru@dotix ~$ cat a.txt
a
b
c
raducroitoru@dotix ~$ cat a.rb
a, n = *$<
puts "a is: #{a}"
puts "n is: #{n}"
raducroitoru@dotix ~$ ruby a.rb a.txt
a is: a
n is: b
$<
是 ARGF,而*
则是 splat。 - radubogdann
和a
变量中。 - sschmeck