Don';我一点也不懂RUBY=[*?a…?z]
我在几年前发现了这段代码。 我理解这段代码的作用,但不知道如何。 有人能解释一下Don';我一点也不懂RUBY=[*?a…?z],ruby,Ruby,我在几年前发现了这段代码。 我理解这段代码的作用,但不知道如何。 有人能解释一下*和在这里做什么吗??我以前从未见过这样使用它们 myarr = [*?a..?z] #generates an array of strings for each letter a to z myarr = [*?a..?z] + [*?0..?9] # array of strings a-z and 0-9 ?只是一种字符文字语法,它在ruby
*
和在这里做什么吗?
?我以前从未见过这样使用它们
myarr = [*?a..?z] #generates an array of strings for each letter a to z
myarr = [*?a..?z] + [*?0..?9] # array of strings a-z and 0-9
?
只是一种字符文字语法,它在ruby<1.9中曾经有特殊的含义,但现在?a
与执行“a”
然后,。
正在创建一个数组,*
只需将其展开为一个参数列表,[
]
对将其转换为一个数组
我希望我的GoogleFu足以获得一些像样的文档链接或解释,但搜索这些链接是非常困难的
更新:?a
实际上与前面提到的“a”
相同,而不是“a”
。要查看此运行(保留IRB标签以帮助说明发生了什么):
&在RubyFYI中:
[*?a…?z]+[*?0…?9]
可以组合成一个[*?a…?z,*?0…?9]
是的,谢谢我没有实际使用这个代码,我只是想知道场景背后发生了什么更具体地说,*
将范围扩展到参数列表中,[…]
将这些参数转换为一个数组。为了完整性,我要提到的是,现在通常是这样做的*('a'..'z')
或('a'..'z')。对于a
@Mark,可能很明显,但我要注意,*('a'..'z')
只能用作参数;对于赋值,a=[*('a'..'z')]
或a=('a'..'z')。到a
。
irb(main):001:0> print ?\t
=> nil
irb(main):002:0> print "\t"
=> nil
irb(main):003:0> print '\t'
\t=> nil
irb(main):004:0>