用于平均ASCII值的Cryptic Ruby语法

时间:2017-08-04 20:46:08

标签: ruby syntax ascii average gets

我看到了一个简单问题的有趣答案。

问题是:"获取从gets"

读取的字符串中每个字符的ASCII值的平均值

正确答案之一是:p gets.sum/~/$/

我搜索了Google,但无法找到有关此语法的任何解释。任何见解都是受欢迎的。感谢。

1 个答案:

答案 0 :(得分:2)

我们在这里有几件事情

  1. gets.sum只是在gets输入的字符串上调用sum并返回一个整数。
  2.   

    结果只是str ...

    中每个字节的二进制值之和
    1. /$/只是一个Regexp,正在查找该行的结尾
    2. ~ operator上的Regexp告诉它对$_ global variable进行操作,sacha:spingetsreadline的最后一个字符串输入。简而言之,这将返回行尾的索引
    3.   

      将rxp与$ _的内容进行匹配。相当于rxp =〜$ _。

      1. 最后,将这两个绑在一起,我们有一个/,它只是一个操作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