用于平均 ASCII 值的神秘 Ruby 语法
Cryptic Ruby syntax for averaging ASCII values
我看到一个简单问题的有趣答案。
问题是:"Get the average of the ASCII values of each character in a string read from gets
"
其中一个正确答案是:p gets.sum/~/$/
我搜索了 Google 但没有找到任何关于此语法的解释。欢迎任何见解。谢谢
我们这里发生了一些事情
gets.sum
只是在 gets
输入的字符串上调用 sum
并返回一个整数。
The result is simply the sum of the binary value of each byte in str...
/$/
只是一个 Regexp 寻找行尾的位置
~
运算符在Regexp上告诉它对$_
全局变量[=45进行操作=] 这是输入到 gets
或 readline
的最后一个字符串。总之这个returns行尾的索引
Matches rxp against the contents of $_. Equivalent to rxp =~ $_.
- 最后,将这 2 个结合在一起,我们得到一个
/
,它只是一个对 2 个整数进行运算的除法运算符。
也可以使用一些空格来使事情更清楚
p gets.sum / ~/$/
注意:如果这是平均值,他们会添加 \n
的值,但不会再将其除掉:
gets.sum/~/$/
# Hello
# => 102
"Hello".sum / "Hello".length
# => 100
"Hello\n".sum / "Hello".length
# => 102
"Hello\n".sum / "Hello\n".length
# => 85
我看到一个简单问题的有趣答案。
问题是:"Get the average of the ASCII values of each character in a string read from gets
"
其中一个正确答案是:p gets.sum/~/$/
我搜索了 Google 但没有找到任何关于此语法的解释。欢迎任何见解。谢谢
我们这里发生了一些事情
gets.sum
只是在gets
输入的字符串上调用sum
并返回一个整数。
The result is simply the sum of the binary value of each byte in str...
/$/
只是一个 Regexp 寻找行尾的位置~
运算符在Regexp上告诉它对$_
全局变量[=45进行操作=] 这是输入到gets
或readline
的最后一个字符串。总之这个returns行尾的索引
Matches rxp against the contents of $_. Equivalent to rxp =~ $_.
- 最后,将这 2 个结合在一起,我们得到一个
/
,它只是一个对 2 个整数进行运算的除法运算符。
也可以使用一些空格来使事情更清楚
p gets.sum / ~/$/
注意:如果这是平均值,他们会添加 \n
的值,但不会再将其除掉:
gets.sum/~/$/
# Hello
# => 102
"Hello".sum / "Hello".length
# => 100
"Hello\n".sum / "Hello".length
# => 102
"Hello\n".sum / "Hello\n".length
# => 85