TypeScript 联合和交集类型的命名
我无法理解typeScript中相交类型和联合类型的逻辑.我认为界面(或类)作为属性集. 逻辑连接操作员 &等于 两个集合的交点 a 和 b 是包含一个也属于b 的所有元素的集合 在打字稿中,交叉点类型也是使用&运算符构建,定义为: 接口类型Colorful和接口Circle是一种新类型,具有Colorful 和Colorful 和 Circle 的新类型> 这与数学和设定理论定义的交叉点完全相反. 我敢肯定还有另一种看待它的方式,但我无法弄清楚. 解决方案 这是考虑它的另一种方法.考虑四组:蓝色的东西,红色的东西,大事和小东西. 如果您相交财产和小型物业. 但是,如果您将蓝色小东西的 union 和红色的小东西 ,则只有小型属性在结果集中是通用的. 相交"蓝色小"与"红色小"产生"小". 换句话说,将值的域结合产生一组相交的属性,反之亦然. 图像形式: 其他解决方案 类型A | B是指 A或B的对象.换句话说,这种类型的
2 2024-04-22
编程技术问答社区
微软喜欢假的价值更好?
我正在阅读乔恩·斯基特(Jon Skeet)书. (#4) ,但一件事(其他)引起了我的注意: 主题:bool? 他在表中写道:( x,y是布尔?) X | Y | X & Y --------------------------- true null null 好吧...所以零是决定的人. 这里的布尔操作数松动. X | Y | X & Y --------------------------- false null false 为什么? 为什么在上一个示例中考虑到这里的布尔操作数正在考虑到结果……? 看来是真的与错误在不同的地方有朋友.... :) 解决方案 发音 null as 未知. true & unknown => unknown false & unknown => false because the
8 2024-04-21
编程技术问答社区
在C#中,应用DeMorgan'定理来手动优化条件语句中的布尔表达式(例如if条件)是否有用?
回到我在C和C ++上大部分工作的那一天,当然,我会手动应用 Demorgan的定理优化任何非平凡的布尔表达式. 在C#中执行此操作是否有用,或者优化器呈现此不必要的? 解决方案 在处理器上这么快,重新排列布尔表达式几乎不可能使速度上的任何实际差异. C#编译器非常聪明,它也将优化它.优化可读性和清晰度! 其他解决方案 您的第一个目标应该是优化此类陈述,以供开发人员理解和易于维护. demorgan的定理可以成为此的有用工具. 其他解决方案 JIT中的优化以当前形式(从我阅读的内容)中并没有为您优化.如果您需要优化它,则需要考虑到这一点. 话虽如此,这是一个相当小的微观优化.通常,我更喜欢以更具表现力的形式写下您的"非平凡布尔表达",以便更容易理解.对我来说,这比应用Demorgan定理获得的任何非常小的优化都更有价值.
10 2024-04-18
编程技术问答社区
有没有一种不太复杂的方法来比较文件版本?
我编写了一个函数,以比较客户当前拥有的内容和服务器上的最新版本之间的文件版本.客户端将" quad"(major.minor.build.private)作为字符串传递给服务器,然后服务器使用fileversioninfo: // clientFileVersion will be in "quad" format, a la "3.1.4.1" private bool ServerFileIsNewer(string clientFileVersion, FileVersionInfo serverFile) { // Don't say I never learned nuthin' from Steve McConnell const int MAJOR_INDEX = 0; const int MINOR_INDEX = 1; const int BUILD_INDEX = 2; const int PRIVATE_INDEX =
12 2024-04-15
编程技术问答社区
C# 如何检查两个值中的一个是否为真?
对于这里的C#专家来说应该是一个简单的问题. 我基本上想检查一个值或另一个值是正确的,在下面,对代码的野生刺伤: if ((Boolean.Parse(staff.getValue("Male")) | Boolean.Parse(staff.getValue("Female"))) { // is true } 这是正确的吗? 谢谢 解决方案 如果完全应该是正确的,则是: var male = bool.Parse(staff.getValue("Male")); var female = bool.Parse(staff.getValue("Female")); if (male ^ female) { //is true } 其他解决方案 听起来好像您正在寻找逻辑或. if(condition1 || condition2) { } 其他解决方案 使用||(双管),逻辑或. bool i
76 2024-04-15
编程技术问答社区
c#中的逻辑评估器(评估逻辑(&&,||)表达式)
在我的项目中有一个Logic evaluation部分,它以一个包含logical expressions(true/false)的字符串为单位. 我想评估此字符串并返回最终的布尔值. string Logic="1&0|1&(0&1)" //string Logic="true AND false OR true AND (false AND true)" 这将是我的Logic.长度可能会增加. 是否有任何方法可以从LINQ / Dynamic LINQ? 中评估这种表达 解决方案 没有任何第三方库的方式是使用带有表达式的数据. 您甚至有可能对其他结果值类型进行评估. System.Data.DataTable table = new System.Data.DataTable(); table.Columns.Add("", typeof(Boolean)); table.Columns[0].Expression = "true and fa
18 2024-04-13
编程技术问答社区
如何将 "0 "和 "1 "转换为假和真
我有一种通过ODBC连接到数据库的方法.我的存储过程 呼叫具有一个从数据库端的返回值,为" char".现在我要抓住 该返回值作为字符串,并在简单的if语句中使用.我真的不喜欢这个主意 当只有两个值可以从数据库回来时,比较这样的字符串. . OdbcCommand fetchCommand = new OdbcCommand(storedProc, conn); fetchCommand.CommandType = CommandType.StoredProcedure; fetchCommand.Parameters.AddWithValue("@column ", myCustomParameter); fetchCommand.Parameters.Add("@myReturnValue", OdbcType.Char, 1) .Direction = ParameterDirection.Output; fetchCommand.ExecuteN
12 2024-04-13
编程技术问答社区
如果第一个表达式是假的,编译器是否继续评估一个所有表达式都必须是真的?
我确定这个问题以前可能已经回答了,所以我深表歉意,但是我找不到适当的搜索词来找到答案. 给定以下代码示例,db.GetRecords().Any()是否执行? string s = "Z"; bool x = s.IndexOfAny(new[] { 'A', 'B' }) > 0 && db.GetRecords().Any(); 解决方案 否. &&和||均通过短路评估.这意味着a && b如果a为false,则返回false,并且a || b如果a为true,则返回true,并且在这两种情况下都不会评估b. 由于某种原因您不需要短路评估,您可以使用位运算符&和|. . 其他解决方案 否. &&操作员的短路(这意味着它在表达式的任何部分评估为false之后停止评估表达式). ||运算符也短路,但在表达式的任何部分评估为true之后都停止评估. 其他解决方案 否,C#使用短路和.因此答案是 no . 如果您需要同时评估
12 2024-04-12
编程技术问答社区
逻辑与运算符
我对逻辑和操作员有点混淆. 我有这两行代码.这里num和j都是int.我有一个满足两个条件的情况,但是我不知道为什么它不打印j的价值.有人可以指出错误吗?预先感谢. if(k==1 && num%j==0) printf("%d",j); 解决方案 在平淡的英语中,当且仅当k等于1 和 时,表达式k == 1 && num % j == 0是正确的C1>是0.我可以说更多. 其他解决方案 这里有两种可能性.要么您永远不会到达printf,要么输出永远不会到达您. 对于第一种情况,您确定k == 1和num % j == 0吗?给我们测试中的实际数值值可能会有所帮助.请注意,如果k是一个浮点数,这是计算结果,则可能会从1.0处略有下降,并且条件将返回false. 对于第二种情况,您如何测试?这应该打印出j的值,但不会冲洗输出,因此,如果程序异常终止或在程序结束时控制台或您可能看不到的东西.尝试printf("%d\n", j);甚至fflush(st
8 2024-04-09
编程技术问答社区
测试同时进行多种条件的测试(C语言)
我必须创建一个菜单,如果输入不有效.它应该继续要求有效的输入.我已经在下面写(在C) #include int main() { int input = 0; printf("What would you like to do? \n 1 (Subtraction) \n 2 (Comparison) \n 3 (Odd/Even) \n 4 (Exit) \n "); scanf_s("%d", &input); while (input != 1 || input != 2 || input != 3|| input != 4) { printf("Please enter a valid option \n"); scanf_s("%d", &input); } // At this point, I think it should keep testing variabl
22 2024-04-07
编程技术问答社区
我在应用德摩根定律时遇到了问题......。反馈?
每当我的作业中出现这些问题中的一个时,我都会弄错了...有人可以帮助我理解吗?还是老师的钥匙关闭? (由于我没有正确的答案,所以我没有办法知道,只让我知道我的错.) 假设x = 7和y = 5.应用De Morgan定律,选择下面的逻辑表达式等效于以下逻辑表达式:!(x>5)||!(y>7) (a) !(x>5)&&!(y>7) (b) !((x>5)||(y>7)) (c) !(x>5)&&(y>7) (d) (x>5)||!(y>7) (e)以上都不是 我会选择b作为答案,但是由于到目前为止我已经错了,所以我害怕在没有帮助的情况下继续. 我理解这一点的方式,您可以通过将其放在整个语句前面,更改: 来整合两个!. !(a)||!(b) to !((a)||(b)) 解决方案 根据 wikipedia ,de Morgan的定律我知道的一件事)是 不(p和q)=(不是p)或(不是q) 在您的问题中,将p映
24 2024-04-07
编程技术问答社区
在c中声明阴影的局部变量
我正在使用CS50库和IDE,并且在试图编译此程序时,我会遇到错误的错误,说"答案"已经被声明了,我不知道该如何解决这个答案,我真的会很高兴当我刚刚开始学习如何编程错误日志时,粘在此上: char.c:9:14: error: declaration shadows a local variable [-Werror,-Wshadow] char answer = get_char("are you okay") char.c:6:10: note: previous declaration is here char answer; char.c:20:12: error: variable 'answer' is uninitialized when used here [-Werror,-Wuninitialized] while (answer != 'y' && answer != 'Y' && answer != 'n' && answ
12 2024-04-06
编程技术问答社区
翻转布尔值的最简单方法?
我只想根据已经是它的布尔来翻转布尔值.如果是真的 - 使其虚假.如果是错误的 - 使其真实. 这是我的代码摘录: switch(wParam) { case VK_F11: if (flipVal == true) { flipVal = false; } else { flipVal = true; } break; case VK_F12: if (otherVal == true) { otherValVal = false; } else { otherVal = true; } break; default: break; } 解决方案 您可以翻转一个值: myVal = !myVal; 因此,您的代码将缩短到: switch(wParam) { case VK_F11: flipVal = !flipVal; break; case VK_F1
14 2024-04-06
编程技术问答社区
在C#中把一个ushort值转换成两个字节的值
我如何将一个吸管分为C#? 中的两个字节变量 我尝试了以下(package.frameid是ushort): 当我尝试用纸和铅笔进行计算时,我会得到正确的结果.另外,如果FrameID大于字节(因此第二个字节不是零),则可以工作. array[0] = (byte)(0x0000000011111111 & package.FrameID); array[1] = (byte)(package.FrameID >> 8); 在我的案例软件包中.帧范围为56,阵列[0]的结果为16,而不是56. . 我该如何修复? 解决方案 0x0000000011111111不是二进制号码,而是十六进制号.您需要使用0x0ff. 但是,由于结果是一个字节,然后铸造到字节会丢弃上部位,因此您实际上不需要and结果.您可以做到这一点: array[0] = (byte)package.FrameID; array[1] = (byte)(package.Frame
12 2024-04-05
编程技术问答社区
比较多个布尔值
我有三个布尔值从该方法返回,我想检查这样的条件:首先,它将检查所有三个布尔值 方案1:如果位置匹配,匹配功能,filtermatchstatus,然后语句返回真实值. 方案2:如果位于位置匹配,匹配功能,filtermatchstatus如果任何布尔值为false,则返回false value 我尝试过这样的尝试,但是,如果任何布尔值为true ,它是返回的 public boolean matchFilter(FilterTruck filter){ boolean locationMatch = filterMatchesLocation(filter); boolean matchCapacity = filterMatchesCapacity(filter); boolean filterMatchStatus = filterMatchesStatus(filter);
18 2024-04-01
编程技术问答社区
你能用布尔代数法将一个具有不关心条件的布尔表达式最小化吗?
我必须以不关心条件的SOP形式最大程度地减少布尔表达.我可以通过k-map做到这一点,但是我只能使用布尔代数法则才能做到这一点. q. Sigma(0,2,3,5,6,7,8,9) + D(10,11,12,13,14,15) 解决方案 使用布尔法律将给定的明确列表和不关心术语可以转换为一个较短的隐性列表. karnaugh-veitch : 从地图或通过检查给定14个可能的14个可能的术语的检查,很明显,只有两个术语是false:1和2. . 因此,表达式可以写为 !(X0 & !X1 & !X2 & !X3) & !(!X0 & X1 & ! X2 & !X3) 应用(!X0 + X1 + X2 + X3) & (X0 + !X1 + X2 + X3) 这两个因素共享(X2 + X3),因此可以考虑到: (!X0 + X1) & (X0 + X1) + X2 + X3 这导致结果: !X0 & !X1 + X0 & X1
22 2024-04-01
编程技术问答社区
关于用两个七段灯显示0x00至0xFF的问题
有人可以帮我吗?我一直在研究并试图实现这一工作,但我不幸.我在网上发现的所有代码都无法正常工作...目前的输出是00、11、22、33,... ff和lop返回到00.如何将第一和第二位数显示?就像我希望它显示0到255(00,01,02 ... ff)? 要求: 第一次电路通电时,七段LED将开始计数为0x00. 对决段LED将数值高达0xFF,每次增加1个.计数必须是顺序的.在数字2上计数0到0,然后将数字1乘1增加1是不可接受的.计数应像计数器一样执行(0x00至0x0f,然后0x10等). 一旦计数达到0xff,计数将在0x00开始. 该代码将在增加计数之间包含足够的延迟,以便可以视觉上确认电路/代码正在按设计. . 上面将在无尽的循环中无限地发生另一个单词,直到设备关闭为止. 源代码: #include void PORTA_init(void) { PORTA = 0; // All PORTA Pins are low
22 2024-04-01
编程技术问答社区
在API调用中的YouTube搜索操作符? booelan操作符AND、OR和NOT
我很难发现操作员和YouTube API研究的运作方式. 在youtube上.搜索我找到了对操作员的逻辑解释的方法setQ,而不是为操作员及其. 主要想法是进行一个搜索,该搜索完全包含两个参数,我可以使用或逻辑. 示例:我想要2个"鱼"和"海"应该是研究的元数据的一部分. 我已经对前端呼叫进行了分析,并具有此形式: 鱼+海洋,但是如果我尝试在爪哇实施它,看起来它的功能无法正常,因为我还有其他结果. PS:我已经通过相关性订购了所有结果(通过将"相关性"值设置为YouTube本身使用的逻辑) 由于这个原因,我在YouTube网站和我的本地应用程序中都具有相同的结果. 解决方案 我使用Google Data API Explorer测试了一些请求,我发现" and "一词(uppercase)它会给您带来一些不同的结果: 例如,以下请求是使用查询" The Ring" (不带双引号)的搜索视频 - 它将带来美国地区的前10个搜索结果: https://w
10 2024-04-01
编程技术问答社区
逻辑运算符 "或 "的错误?
我正在学习语言python.尽管确实很简单,但我在闲置和python中使用逻辑运算符获得了一些意外的结果. 我在这样的空闲中进行了一个简单的测试: (2 or 10) in range(1,6) 我的回应是True.到目前为止,一切都很好.但是,如果我这样做: (10 or 2) in range(1,6) 我的响应是False.即使" 2"显然位于range(1,6)中. 我在pycharm中进行了相同的测试,这是我的响应: if (2 or 10) in range(1,6): print("True") else: print("False") 结果:True if (10 or 2) in range(1,6): print("True") else: print("False") 结果:False if 2 or 10 in range(1,6): print("True") el
18 2024-04-01
编程技术问答社区
递归逻辑,将字符串解析为复杂的布尔值?
我敢肯定这是之前已经完成的,我只是找不到. 我需要将类似的东西"((A或B)和C)或D"转换为属性查询的数据库查询.具体来说,我正在使用Ruby续集.谁能指出我的例子,实用程序,或者可以使我无法重塑轮子的东西? 解决方案 您可以使用 antlr 自动为这种类型的字符串生成红宝石parser . ANTLR是解析器的生成器,它允许您为语言定义语法(例如您描述的布尔语言). 解析后,您可以指定需要采取哪些操作来构建所需的数据结构(在您的情况下,是捕获查询结构的树数据结构). 这并不是一个特别的红宝石问题,因为Antlr还可以为其他语言生成解析器.在您的情况下,它将产生一个红宝石解析器,您可以将其集成到应用程序中以解析字符串并产生所需的数据结构.
44 2024-04-01
编程技术问答社区