gpt4 book ai didi

ruby - 你如何理解 Ruby 中的这个三元条件?

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

我在某些代码中遇到了三元组,但我无法理解条件:

str.split(/',\s*'/).map do |match|
match[0] == ?, ?
match : "some string"
end.join

我确实理解我是在某些点上拆分字符串并将总结果转换为数组,然后依次处理数组的每个元素。除此之外,我不知道发生了什么。

最佳答案

一种(稍微)不那么令人困惑的写法是:

str.split(/',\s*'/).map do |match|
if match[0] == ?,
match
else
"some string"
end
end.join

我认为多行三元语句很糟糕,尤其是 if block 可以在 Ruby 中返回。

可能这里最令人困惑的是?,,它是一个字 rune 字。在 Ruby 1.8 中,这意味着字符的 ASCII 值(在本例中为 44),在 Ruby 1.9 中,这只是一个字符串(在本例中为 ",")。

使用字 rune 字而不是 "," 的原因是在 Ruby 1.9 中对字符串调用 [] 的返回值发生了变化。 In 1.8 it returned the ASCII value of the character at that position , in 1.9 it returns a single-character string .在此处使用 ?, 可避免担心 Ruby 1.8 和 1.9 之间 String#[] 的差异。

最终,条件只是检查 match 中的第一个字符是否为 ,,如果是,则保持值不变,否则将其设置为 “一些字符串”

关于ruby - 你如何理解 Ruby 中的这个三元条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9713000/

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