Programming languages “的编程语言习惯用法”;如果object.value==some_值,则object.value=some_other_值;

Programming languages “的编程语言习惯用法”;如果object.value==some_值,则object.value=some_other_值;,programming-languages,idioms,Programming Languages,Idioms,我一直在想,如果没有,为什么没有,下面的伪代码有一个习惯用法/快捷方式: if object.value == some_value then object.value = some_other_value test ( object.value ): if (it > 0) it = 0; else it -= 1; 例如,我有时用JavaScript编写: if (document.getElementById("toggledDiv").style.display

我一直在想,如果没有,为什么没有,下面的伪代码有一个习惯用法/快捷方式:

if object.value == some_value then object.value = some_other_value
test ( object.value ):
    if (it > 0) it = 0;
    else it -= 1;
例如,我有时用JavaScript编写:

if (document.getElementById("toggledDiv").style.display == "block") {
    document.getElementById("toggledDiv").style.display = "none";
}
这似乎相当乏味。这个习语有没有名字,在通用编程语言中有没有更简洁的语法

谢谢大家!

编辑:更准确地说,我不关心大括号,但你必须至少引用属性到次。我想要这样的东西(伪代码):

e。g、 :

test (document.getElementById("toggledDiv").style.display):
    if (it == "block") it = "none";
其中,
它是引用测试属性的关键字。我只是想知道似乎没有任何编程语言实现了这一点

Upate

好的,同时我发现了一些有点短的东西,但只在JavaScript中有效:

(function(s){
  if(s.display=='block') 
    s.display="none";
  else 
    s.display='block'; 
})(document.getElementById("toggledDiv").style)

在JavaScript中,您可以执行以下操作:

var d = document.getElementById("toggledDiv");
if (d.style.display == "block") d.style.display = "none";

我不知道有哪种语言支持开箱即用,但是有很多语言支持定义新的操作符。理论上,您可以编写如下内容(在psuedo代码中)

您还可以选择两个版本:

  • 如果值不在列表中,则返回原始值的函数
  • 如果值不在列表中,则抛出错误(我的版本所做的)
前者将不是一个切换,而是更多的。。。我想是你要求的。我是根据前面关于css/block/none的注释中的toggle用例编写代码的,其中toggle是更常见的行为

假设语言支持它,您也可以编写
toggle=
操作符:

v toggle= ['none', 'block']

在Haskell和其他FP语言中,条件,比如三元运算符,是一级表达式,所以你可以将赋值浮出来

a = if x == y then x else z

使代码更干净。

在Perl中,如果value=some,您可以编写
value=other,我认为它更简洁,因为可以避免大括号。:)我知道,但它没有那么短,仍然需要遍历两个属性两次。这在非FP语言(如C/C++/Java)中也很常见:
a=x==y?x:z是,“像三元运算符”,它们无处不在。
v toggle= ['none', 'block']
a = if x == y then x else z