【问题标题】:Why does Ruby unpack sometimes return an array, but sometimes return values?为什么 Ruby 解包有时会返回数组,有时会返回值?
【发布时间】:2020-03-22 04:32:03
【问题描述】:

在下面的代码中,我使用 unpack() 从字符串中准备一些字节:

  # unpack two bytes
  byte1, byte2 = "ABCDEFG".unpack("CC")
  # unpack one byte
  byte3 = "ABCDEFG".unpack("C")

当我悬停在byte1 上时,我看到65,当我悬停在byte2 上时,我看到66,但是当我悬停在byte3 上时,我看到[0] = 65。这是为什么呢?

【问题讨论】:

  • @Yule 是 vscode,如果这很重要的话
  • 要查看发生了什么,请尝试 byte1, byte2 = [ 65, 66 ] 并将鼠标悬停在变量上然后...
  • @Arkku 这基本上就是现在正在发生的事情。问题是因为第二个示例没有解构结果,所以它只是正常返回的数组。
  • @Arkku 但这并不能解释任何事情——OP 在问他们为什么不同,这是让 OP 感到困惑的第二个例子。

标签: arrays ruby string unpack


【解决方案1】:

在第一个示例中,您将解构返回的数组。

在第二个例子中你不是。

unpack 始终返回一个数组(如文档中所述),但您对该数组的操作会影响您的编辑器/IDE 中显示的内容。在第二个示例中,您将单个值设置为数组 unpack 的返回值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 2018-05-27
    • 2012-02-04
    相关资源
    最近更新 更多