gpt4 book ai didi

ruby - 为什么在 Ruby 中,Array ("foo\nbar") == ["foo\n", "bar"]?

转载 作者:数据小太阳 更新时间:2023-10-29 07:38:41 25 4
gpt4 key购买 nike

在 Ruby 1.8.7 中,Array("hello\nhello") 为您提供 ["hello\n", "hello"]。这做了两件我不期望的事情:

  1. 它在换行处拆分字符串。我希望它只是给我一个数组,其中包含我传入的字符串作为其单个元素,而不修改我传入的数据。

  2. 即使您承认在将字符串传递给 Array 时拆分字符串是合理的,为什么它保留换行符而 "foo\nbar".split 不保留换行符?

另外:

>> Array.[] "foo\nbar"
=> ["foo\nbar"]
>> Array.[] *"foo\nbar"
=> ["foo\n", "bar"]

最佳答案

It splits the string on newlines. I'd expect it simply to give me an array with the string I pass in as its single element without modifying the data I pass in.

这是一个和其他任何约定一样好的约定。例如,Python 中的 list 构造函数做了完全不同的事情:

>>> list("foo")
['f', 'o', 'o']

只要它是一致的,我就看不到问题。

Even if you accept that it's reasonable to split a string when passing it to Array, why does it retain the newline character when "foo\nbar".split does not?

我的大胆猜测(由快速谷歌搜索和 TryRuby 支持)是字符串的 .split 方法这样做是为了使其成为 .join< 的“反向”操作 数组的方法。

>> "foospambar".split("spam").join("spam")
=> "foospambar"

顺便说一下,我无法在 TryRuby 上复制你的行为:

>> x = Array("foo\nbar")                                                         
=> ["foo\nbar"]
>> Array.[] *"foo\nbar"
=> ["foo\nbar"]

关于ruby - 为什么在 Ruby 中,Array ("foo\nbar") == ["foo\n", "bar"]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3027952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com