gpt4 book ai didi

ruby - 如果它等于特定值,则在 Ruby 中更改变量的优雅方法

转载 作者:行者123 更新时间:2023-12-05 06:15:35 26 4
gpt4 key购买 nike

我正在寻找一种更优雅的方式来做到这一点:

my_var = nil if my_var == 2

目前,我必须重复 my_var 两次,它读起来不太好或看起来不太好。

如果我 my_var 是散列中的键,这会变得更加丑陋:

my_hash[:my_key] = nil if my_hash[:my_key] == 12

如果我只想在它已经为 nil 时更改它,那么我可以这样做:

my_var ||= 2

哪个更干净。

如果变量值等于某个值,是否有更好的方法来更改它?

最佳答案

听起来您想使用标记值来表示 nil 值。

这是一种方法,可能完全适合您的情况,也可能不适合您的情况。首先,根据您选择的哨兵值定义一个生成您的 nilifier 的函数:

def make_nilifier sentinel
-> (var) { var == sentinel ? nil : var }
end

在您的第一个示例中,标记值是 2:

nilifier = make_nilifier 2

然后,您可以通过调用 nilifiermy_var 赋值:

> my_var = nilifier.call 1
> my_var
=> 1

> my_var = nilifier.call 2
> my_var
=> nil

在您的情况下,您正在检查已设置的值 - 这提供了一种检查分配值的方法。同样,它可能完全适合也可能不适合,但可能会提供一些有用的想法。

关于ruby - 如果它等于特定值,则在 Ruby 中更改变量的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62435061/

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