gpt4 book ai didi

javascript - 用 javascript 中的文字对象替换 switch case(在 c++ 中)

转载 作者:行者123 更新时间:2023-11-28 02:16:20 28 4
gpt4 key购买 nike

在 javascript 和许多其他编程语言中都有 switch case

switch(n)
{
case 1:
alert(1);
break;
case 2:
alert(2);
break;
default:
alert(3);
}

Javascript 还允许您大大缩短它。

alert({1:1,2:2}[n]||3); // literal obj , i need this.

alert([1,2][n-1]||3); // array

C++ 中有类似的东西吗?

文字对象...

更高级的例子

var 
moveUp=function(){},
moveDown=function(){},
doNothing=function(){};

switch(txt)
{
case 'moveUp':
moveUp();
break;
case 'moveDown':
moveDown();
break;
default:
doNothing();
}

我更喜欢:

window.moveUp=function(){}
window.moveDown=function(){}
window.doNothing=function(){}

window[txt]?window[txt]():window.doNothing();

或者只是

window.moveUp=function(){}
window.moveDown=function(){}

!window[txt]||window[txt]();

window 可以是任何其他(自定义或预定义的)对象。

最佳答案

std::map 对此效果很好。您可以使用大括号符号创建它:

std::map<int, int> m = { {1,1}, {2,2}, {3, 3} };

这样方便以后使用:

f((std::map<int, int>{ {1,1}, {2,2}, {3,3} })[1]);

但是,根据您处理丢失键的需要,您可能需要为此编写一些帮助程序。

为了更接近第二个示例中的内容:

void f ();
void g ();

f((std::map<std::string, std::function<void(void)> { {"a", f}, {"b", g} })["a"]);

坦率地说,如果我是你,我会停止用 C++ 编写 JS。它们是两种不同的语言,具有不同的做法和习语。将“聪明的”JS oneliners 硬塞进 C++ 语法中并不是一个好主意。

关于javascript - 用 javascript 中的文字对象替换 switch case(在 c++ 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33914550/

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