有没有更好的写v =(v == 0?1:0)的方法; [关闭]
本文翻译自: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)的方法; [关闭]相关推荐
- 如何更优雅的写for循环
这是一个由for循环触发的感想.哪里写的不好欢迎拍砖.对格式有要求的 请移步: http://51viola.top 重构片段一:循环 举例:之前习惯顺着逻辑思路一层层往下写 function tes ...
- 使用U盘,V盘,移动硬盘的终极方法 (转)
我被这个问题困扰了很久,研究了N中方法,,现在我就吧我的方法告诉大家,一定能够搞定.. 我看了很多文章,都是写得很不全..看来只有自己研究才是呀.实践得真知!!! 使用U盘,V盘,移动硬盘的终极方法 ...
- 联合体(共同体)union V{...}v;
void test () { union V { struct X { unsigned char s1:2; // :2 指 占两个字符? 是两个bit.若是int 占多少? unsi ...
- 2021-12-01 WPF上位机 103-西门子S7协议之V区,DB区读数据方法流程解析
文章目录 前言 一.西门子S7协议之V区,DB区读数据方法流程解析 二.使用步骤 1.读取数据 总结 前言 随着人工智能的不断发展,物联网这门技术也越来越重要,很多人都开启了物联网学习,本文就介绍了物 ...
- 拓扑排序 【Kahn算法】时间复杂度 V*V + E (个人认为)
Ordering Tasks UVA - 10305 下面的代码也是这道题的题解: #include<cstdio> #include<map> #include<qu ...
- v+=e不等于v=v+e
当v有副作用时,其实v+=e不等于v=v+e 计算v+=e只会求一次v的值,而计算v=v+e则会求两次v的值.在后一种情况下,对v求值可能引起的任何副作用也都会出现两次. a[i++] += 2; ...
- IEEE ICIP 2019 | 更快更好的联邦学习:一种特征融合方法
目录 前言 Abstract 1.Introduction 2.Related Work 3.Methods 3.1 Feature Fusion Modules 3.1.1 Conv operato ...
- 基于RxJava2.0+Retrofit2.0的文件下载实现(带进度,非覆写ResponseBody和拦截器)
基于RxJava2.0+Retrofit2.0的文件下载实现(带进度,非覆写ResponseBody和拦截器) 前言 本文主要讲解RxJava2.0+Retrofit2.0实现下载文件并带进度效果,如 ...
- javascript从0到0.9手写一个windows计算器
说实话,最初想用javascript模拟着windows的计算器写一个的时候,感觉也就是10分钟搞定,但写着写着发现,其实并不是那么容易的事,window的这个计算器逻辑挺多的. 而且还想给别人把这个 ...
最新文章
- [跟我学UML] UML类图中的泛化
- ASP.NET MVC 二维码生成(ThoughtWorks.QRCode)
- pycharm设置控制台的解释器_PyCharm 中文教程 01:运行 Python 的四种方式
- 中间件及tomcat的内存溢出调优
- LeetCode 460. LFU缓存(哈希双链表)
- 2021年上半年内容型社交电商行业分析报告
- BeginnersBook JSP、JSTL、Servlet 教程
- selenium定位php,selenium之元素定位
- 转载:HTML5及移动端BUG
- R语言ETL工程:插入与合并(add/bind)
- plsql 误删除了存储过程怎么处理_照片恢复 - 内存卡及手机误删照片怎么恢复?...
- 谭浩强c语言第六版答案,C语言谭浩强版本第6章课后练习题答案
- IntelliJ IDEA设置--类代码模板自定义(注释)
- java 如何执行dig 命令_linux dig 命令使用方法
- #IB TWS编程手记——03-关于IB合约的一二三
- Unity中摄像机绕物体旋转和拉近拉远视角的操作
- matlab批量修改文件名
- 网秦上市前夕被央视曝光恶意吸费 网秦飞流否认
- 推荐财务、HR必看的【出差租房分析】,能为公司节省巨额差旅费!
- C语言----小游戏
热门文章
- (hdu step 6.3.3)Air Raid(最小路径覆盖:求用最少边把全部的顶点都覆盖)
- NetScaler Networking Deployment
- 活着是一种罪过,是上帝对你的另一种眷顾,叫做惩罚!活着痛苦!
- windows 2003系列之搭建域环境
- [最小割] Luogu P4662 黑手党
- Java技术面试汇总
- uva 1463 - Largest Empty Circle on a Segment(二分+三分+几何)
- oracle-day1
- 方法的重载与重写区别
- F-Scrack 弱口令检测脚本