gpt4 book ai didi

Ruby 匹配子集和显示集(变量)

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

feelings = Set["happy", "sad", "angry", "high", "low"]
euphoria = Set["happy", "high"]
dysphoria = Set["sad", "low"]
miserable = Set["sad", "angry"]

puts "How do you feel?"
str = gets.chomp
p terms = str.split(',')

if euphoria.proper_subset? feelings
puts "You experiencing a state of euphoria."
else
puts "Your experience is undocumented."
end

gets

如何使 euphoria 成为一个变量,以便如果对应的 miserable 或 dysphoria 字符串匹配并显示集合名称。喜欢#{Set}

最佳答案

回顾你所拥有的,我认为这更像是你真正想要的:

require 'set'

feelings = {
euphoria: Set.new(%w[happy high]),
dysphoria: Set.new(%w[sad low]),
miserable: Set.new(%w[sad angry])
}

puts "What are you feeling right now?"
mood = Set.new gets.scan(/\w+/)
name, _ = feelings.find{ |_,matches| matches.subset?( mood ) }
if name
puts "You are experiencing a state of #{name}"
else
puts "Your experience is undocumented."
end

调用 gets.scan(/\w+/) 返回一个字符串数组。它比 .split(',') 更好,因为它允许用户在逗号后放置一个空格(例如“sad, happy”)或只使用空格(例如“sad happy”)。

如您所知,Set[] 需要多个参数。相反,我们使用 Set.new 它接受一个值数组。或者,您可以使用 mood = Set[*gets.scan(/\w+/)],其中 * 获取值数组并将它们作为显式参数传递.

此外,我从 proper_subset? 更改为 subset?,因为“happy,high”不是“happy”的正确子集,high”,但它是一个子集。

关于Ruby 匹配子集和显示集(变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9046899/

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