本文翻译自:Is there a better way of writing v = (v == 0 ? 1 : 0); [closed]

I want to toggle a variable between 0 and 1. If it's 0 I want to set it to 1, else if it's 1 I want to set it to 0. 我想在0和1之间切换变量。如果它是0我想将其设置为1,否则如果它是1我想将其设置为0。

This is such a fundamental operation that I write so often I'd like to investigate the shortest, clearest possible way of doing it. 这是我经常写的一个基本操作,我想研究最短,最清晰的方法。 Here's my best so far: 到目前为止,这是我最好的:

v = (v == 0 ? 1 : 0);

Can you improve on this? 你能改进吗?

Edit: the question is asking how to write the above statement in the fewest characters while retaining clarity - how is this 'not a real question'? 编辑:问题是询问如何在保留清晰度的同时用最少的字符写上述语句 - 这怎么'不是真正的问题'? This wasn't intended to be a code-golf exercise, though some interesting answers have come out of people approaching it as golf - it's nice to see golf being used in a constructive and thought-provoking manner. 这不是一个代码高尔夫练习,虽然一些有趣的答案来自人们接近它作为高尔夫球 - 很高兴看到高尔夫球以建设性和发人深省的方式使用。


#1楼

参考:https://stackoom.com/question/SzvX/有没有更好的写v-v-的方法-关闭


#2楼

定义一个数组{1,0},将v设置为v [v],因此值为0的v变为1,反之亦然。


#3楼

If there are just two values, as in this case(0, 1), i believe it's wasteful to use int. 如果只有两个值,就像在这种情况下(0,1),我相信使用int是浪费的。 Rather go for boolean and work in bits. 而是选择布尔值并使用位。 I know I'm assuming but in case of toggle between two states boolean seems to be ideal choice. 我知道我在假设但是如果在两个状态之间切换,布尔似乎是理想的选择。


#4楼

Since this is JavaScript, we can use the unary + to convert to int: 由于这是JavaScript,我们可以使用一元+转换为int:

v = +!v;

This will logical NOT the value of v (giving true if v == 0 or false if v == 1 ). 这将是逻辑而NOT v的值(如果v == 0则给出true ,如果v == 1则给出false )。 Then we convert the returned boolean value into its corresponding integer representation. 然后我们将返回的布尔值转换为相应的整数表示。


#5楼

This is missing: 缺少这个:

v = [1, 0][v];

It works as round robin as well: 它也可以作为循环法:

v = [2, 0, 1][v]; // 0 2 1 0 ...
v = [1, 2, 0][v]; // 0 1 2 0 ...
v = [1, 2, 3, 4, 5, 0][v]; // 0 1 2 3 4 5 ...
v = [5, 0, 1, 2, 3, 4][v]; // 0 5 4 3 2 1 0 ...

Or 要么

v = {0: 1, 1: 0}[v];

The charme of the last solution, it works with all other values as well. 最后一个解决方案的魅力,它也适用于所有其他值。

v = {777: 'seven', 'seven': 777}[v];

For a very special case, like to get a (changing) value and undefined , this pattern may be helpful: 对于一个非常特殊的情况,比如获取(更改)值并且undefined ,此模式可能会有所帮助:

v = { undefined: someValue }[v]; // undefined someValue undefined someValue undefined ...

#6楼

Well, As we know that in javascript only that Boolean comparison will also give you expected result. 好吧,正如我们所知,在javascript中,只有布尔比较也会给你预期的结果。

ie v = v == 0 is enough for that. v = v == 0就足够了。

Below is the code for that: 以下是代码:

 var v = 0; alert("if v is 0 output: "+ (v == 0) ); setTimeout(function(){ v = 1; alert("if v is 1 Output: "+ (v == 0) ); }, 1000); 

JSFiddle: https://jsfiddle.net/vikash2402/83zf2zz0/ JSFiddle: https ://jsfiddle.net/vikash2402/83zf2zz0/

Hoping this will help you :) 希望这会帮助你:)

有没有更好的写v =(v == 0?1:0)的方法; [关闭]相关推荐

  1. 如何更优雅的写for循环

    这是一个由for循环触发的感想.哪里写的不好欢迎拍砖.对格式有要求的 请移步: http://51viola.top 重构片段一:循环 举例:之前习惯顺着逻辑思路一层层往下写 function tes ...

  2. 使用U盘,V盘,移动硬盘的终极方法 (转)

    我被这个问题困扰了很久,研究了N中方法,,现在我就吧我的方法告诉大家,一定能够搞定.. 我看了很多文章,都是写得很不全..看来只有自己研究才是呀.实践得真知!!! 使用U盘,V盘,移动硬盘的终极方法 ...

  3. 联合体(共同体)union V{...}v;

    void test () { union V { struct X { unsigned char s1:2;     //   :2  指 占两个字符? 是两个bit.若是int 占多少? unsi ...

  4. 2021-12-01 WPF上位机 103-西门子S7协议之V区,DB区读数据方法流程解析

    文章目录 前言 一.西门子S7协议之V区,DB区读数据方法流程解析 二.使用步骤 1.读取数据 总结 前言 随着人工智能的不断发展,物联网这门技术也越来越重要,很多人都开启了物联网学习,本文就介绍了物 ...

  5. 拓扑排序 【Kahn算法】时间复杂度 V*V + E (个人认为)

    Ordering Tasks UVA - 10305  下面的代码也是这道题的题解: #include<cstdio> #include<map> #include<qu ...

  6. v+=e不等于v=v+e

    当v有副作用时,其实v+=e不等于v=v+e 计算v+=e只会求一次v的值,而计算v=v+e则会求两次v的值.在后一种情况下,对v求值可能引起的任何副作用也都会出现两次. a[i++]  +=  2; ...

  7. IEEE ICIP 2019 | 更快更好的联邦学习:一种特征融合方法

    目录 前言 Abstract 1.Introduction 2.Related Work 3.Methods 3.1 Feature Fusion Modules 3.1.1 Conv operato ...

  8. 基于RxJava2.0+Retrofit2.0的文件下载实现(带进度,非覆写ResponseBody和拦截器)

    基于RxJava2.0+Retrofit2.0的文件下载实现(带进度,非覆写ResponseBody和拦截器) 前言 本文主要讲解RxJava2.0+Retrofit2.0实现下载文件并带进度效果,如 ...

  9. javascript从0到0.9手写一个windows计算器

    说实话,最初想用javascript模拟着windows的计算器写一个的时候,感觉也就是10分钟搞定,但写着写着发现,其实并不是那么容易的事,window的这个计算器逻辑挺多的. 而且还想给别人把这个 ...

最新文章

  1. [跟我学UML] UML类图中的泛化
  2. ASP.NET MVC 二维码生成(ThoughtWorks.QRCode)
  3. pycharm设置控制台的解释器_PyCharm 中文教程 01:运行 Python 的四种方式
  4. 中间件及tomcat的内存溢出调优
  5. LeetCode 460. LFU缓存(哈希双链表)
  6. 2021年上半年内容型社交电商行业分析报告
  7. BeginnersBook JSP、JSTL、Servlet 教程
  8. selenium定位php,selenium之元素定位
  9. 转载:HTML5及移动端BUG
  10. R语言ETL工程:插入与合并(add/bind)
  11. plsql 误删除了存储过程怎么处理_照片恢复 - 内存卡及手机误删照片怎么恢复?...
  12. 谭浩强c语言第六版答案,C语言谭浩强版本第6章课后练习题答案
  13. IntelliJ IDEA设置--类代码模板自定义(注释)
  14. java 如何执行dig 命令_linux dig 命令使用方法
  15. #IB TWS编程手记——03-关于IB合约的一二三
  16. Unity中摄像机绕物体旋转和拉近拉远视角的操作
  17. matlab批量修改文件名
  18. 网秦上市前夕被央视曝光恶意吸费 网秦飞流否认
  19. 推荐财务、HR必看的【出差租房分析】,能为公司节省巨额差旅费!
  20. C语言----小游戏

热门文章

  1. (hdu step 6.3.3)Air Raid(最小路径覆盖:求用最少边把全部的顶点都覆盖)
  2. NetScaler Networking Deployment
  3. 活着是一种罪过,是上帝对你的另一种眷顾,叫做惩罚!活着痛苦!
  4. windows 2003系列之搭建域环境
  5. [最小割] Luogu P4662 黑手党
  6. Java技术面试汇总
  7. uva 1463 - Largest Empty Circle on a Segment(二分+三分+几何)
  8. oracle-day1
  9. 方法的重载与重写区别
  10. F-Scrack 弱口令检测脚本