gpt4 book ai didi

ruby - 较短的案例陈述

转载 作者:太空宇宙 更新时间:2023-11-03 17:14:04 25 4
gpt4 key购买 nike

让我们考虑一下这个 ruby​​ 代码:

@name = case @name
when 1 then "Noah"
when 2 then "Liam"
when 3 then "Mason"
when 4 then "Jacob"
when 5 then "William"
when 6 then "Ethan"
when 7 then "James"
when 8 then "Alexander"
when 9 then "Michael"
when 10 then "Benjamin"
when 11 then "Elijah"
when 12 then "Daniel"
when 13 then "Aiden"
when 14 then "Logan"
when 15 then "Matthew"
when 16 then "Lucas"
when 17 then "Jackson"
when 18 then "David"
when 19 then "Oliver"
when 20 then "Jayden"
when 21 then "Joseph"
when 22 then "Gabriel"
when 23 then "Samuel"
when 24 then "Carter"
when 25 then "Anthony"
when 26 then "John"
when 27 then "Dylan"
when 28 then "Luke"
when 29 then "Henry"
when 30 then "Andrew"
end

我强烈怀疑有更短的方法来写同样的东西。形状为 @name.case["Noah", "Liam"...] 的东西。甚至 LaTeX 也有更好的方法来处理这个问题。考虑到我的程序将有一个非常长的 case 语句列表,所以如果我这样保留它可能会起作用,但它会非常长且难以阅读。不过我找不到类似的东西。

你知道有没有这样的选项?

最佳答案

假设您有姓名 列表。您可以创建一个将整数映射到它们的散列

mapping = Hash[(1..names.size).zip(names)]

然后实现一个给定数字和映射规则返回名称或其他内容的函数

def id_to_name(id, mapping)
mapping.fetch(id, 'no name')
end

你甚至可以为此创建一个类,所以这个方法不需要映射作为参数

class IdToName
def initialize(names, fallback_name)
@mapping = Hash[(1..names.size).zip(names)]
@fallback_name = fallback_name
end

def get(id)
@mapping.fetch(id, @fallback_name)
end
end

id_to_name = IdToName.new(your_names, 'no name')
puts id_to_name.get(1) # Noah
puts id_to_name.get(1000) # no name

关于ruby - 较短的案例陈述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48584880/

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