1

很多时候我发现自己需要写类似的东西:

_parsedBetData["prizeLevel"] = params["prizeLevel"] == null ? "default" : params["prizeLevel"]; 

我很好奇是否有更好的方法来做到这一点?我主要担心的是我必须编写params["prizeLevel"]两次。

当然,这可以提取为类似于以下的函数:

_parsedBetData["prizeLevel"] = defaultIfNull(params["prizeLevel"], "foo");

function defaultIfNull(o:*, default:*):* {
    return o == null ? default : o;
}

但是,我必须从我想要进行此检查的任何地方访问此功能。因此,我想知道是否有一些聪明的方法可以解决这个问题。也许在某种位魔法的帮助下?或者原型/动态的东西在这里适用吗?

到目前为止,我想出的最佳解决方案是在代码 IDE 中创建一个宏,以使某些特定的键盘组合编写此代码。但我敢打赌,有人会有更好的主意。

4

2 回答 2

4

也许逻辑或分配是您正在寻找的:)

你可以做

参数["prizeLevel"] ||= "默认";

如果您希望它位于其他变量中,请使用简单的OR 运算符

_parsedBetData["prizeLevel"] = 参数["prizeLevel"] || “默认”;

- 编辑 -

32bitkid 和 cleong 都是对的。您应该使用逻辑运算符,而不是按位运算符。

于 2012-08-30T09:21:42.800 回答
2

这可能是您正在寻找的语法:

_parsedBetData["prizeLevel"] = params["prizeLevel"] || "default";

要将 _parsedBetData["prizeLevel"] 设置为默认值(如果它为空),您可以执行

_parsedBetData["prizeLevel"] ||= "default";

这可能不完全符合您的要求,因为空字符串的计算结果也为 false。

于 2012-08-30T09:42:04.047 回答