天道酬勤,学无止境

syntax

How to get rid of editor’s error for object.key

问题 我有以下代码,它基本上获取了一些 JSON 数据,查找带有“servergenre”的键,并将结果保存在一个数组中。 这是这个问题的后续。 let result = []; Object.keys(data).forEach( key => { if(/servergenre/.test(key)){ result.push(data[key]) } }); 即使代码工作正常,在某些编辑器中也会引发语法错误: “ key ”:无法解析的变量或类型键 “ => ”:预期的表达式 "if( / server...": 期望形式参数名称 " )){ ": ,预期 " }); ": 预期的语句 这是一张图片,向您展示错误的位置: 正如我所说的代码工作正常,我只需要修复它或其他方法来消除错误。 此外,许多压缩器和压缩器不支持这段代码。 所以我不能缩小它。 提前致谢。 回答1 ES2015,以前称为 ES6,是 JavaScript 的更新版本,它为您正在使用的函数引入了诸如=>语法等特性。 并非所有浏览器都完全支持 ES2015 的所有功能,因此许多使用它的人首先通过编译器(“转译器”)将其转换为所有浏览器都支持的 ES5。 Babel 就是这样一种转译器。 但是,如果您只针对较新的浏览器,那就可以解释为什么=>语法对您有用。 您只需要更改编辑器设置即可理​​解该语法。

2022-05-17 04:58:07    分类:技术分享    javascript   jquery   json   syntax

Using proper grammar in Gherkin

问题 查找有关 Gherkin 的文档似乎非常困难,所以我想知道是否有办法增加步骤定义以使测试人员能够使用正确的语法。 一个说明我的意思的例子是: ...Testing... Then I see there is 1 item ...More testing... Then I see there are 2 items 显然,这两个步骤将使用相同的代码。 我定义了一个这样的步骤定义,它几乎可以工作: Then(/^I see there (is|are) (\d+) item(s)?$/) do |item_count| ...code... end 除了问题是它将is/are和可选的复数s解释为参数。 有什么方法可以向 Gherkin 发出信号,表明这些只是为了允许正确的语法? 回答1 /^I see there (?:is|are) (\d+) item(?:s)?$/ 回答2 这些步骤不必使用相同的代码。 相反,他们可以调用相同的代码。 如果你应用这种模式,你就可以专注于你的步骤,只做他们应该做的一件事,那就是使用表达良好的自然语言来触发代码。 所以 ... module ItemStepHelper def see_items(count:) ... end World ItemStepHelper Then 'I see there is one item' do

2022-05-16 18:05:04    分类:技术分享    syntax   cucumber   gherkin

Should variable references be $-prefixed in arithmetic for loops (arithmetic contexts)?

问题 以下所有这些选项都可用于将 i 设置为计数。 count=5 for (( i=count; i>=0; i-- )); do echo "$i" done for (( i=$count; i>=0; i-- )); do echo "$i" done for (( i=$((count)); i>=0; i-- )); do echo "$i" done for (( i=${count}; i>=0; i-- )); do echo "$i" done 哪个是正确的或首选的? 回答1 通常,在((...))和$((...))等算术上下文中,仅按名称引用变量,不带$前缀(因为您的命令已经对变量$i执行了操作): for (( i=count; i>=0; i-- )); do echo "$i" done 由于((...))本身就是算术上下文,因此没有充分的理由在其中使用单独的扩展算术上下文 - $((count)) -。 请注意$count和${count}是等价的,并且在$之后将变量名 - count - 括在{和}中只是为了消除变量名与后续字符的歧义,这些字符也可以合法地成为变量名的一部分(这不会'不适用于您的命令)。 正如 Gordon Davisson 指出的那样,有些人选择总是使用${var}形式来获得视觉清晰度。 虽然在算术上下文中以$前缀的变量引用确实有效

2022-05-16 16:11:11    分类:技术分享    bash   variables   for-loop   syntax

Explain ${#arrayname[@]} syntax for array length in bash?

问题 我知道可以通过${#arrayname[@]}获得 bash 中数组的长度。 我的问题是:这只是我必须记住的东西,还是可以将这种语法分解成可以理解的部分? 例如, @符号意味着人们期望在哪里找到索引? 为什么是# ? 回答1 #在变量引用的开头表示获取变量值的长度。 对于普通变量,这意味着它的字符长度。 #是“数字”符号,因此您可以记住它的意思是“变量中事物的数量”。 数组索引中的@或*表示使用整个数组,而不是特定元素,并且返回数组元素的个数而不是返回字符数。 *在许多情况下用作通配符,因此应该很容易记住。 此外, $*和$@用于表示 shell 脚本的所有参数,因此与所有数组元素的并行应该是显而易见的。 您不能只写${#arrayname}因为当您使用不带下标的数组变量时,它相当于数组的元素0 。 所以${#arrayname}与${#arrayname[0]}相同,它是数组第一个元素中的字符数。 回答2 通常,形式${#PARAMETER}的用法返回以字符数表示的长度,而不是参数值的字节数。 myString="Hello StackOverflow!" printf "%s\n" "${#myString}" 20 但是对于数组来说,这种展开类型有两层含义: 对于单个元素,它报告元素的字符串长度(对于每个“正常”参数) 对于质量下标@和* ,它报告数组中集合元素的数量

2022-05-16 16:03:03    分类:技术分享    arrays   bash   syntax

Why doesn't this for loop work when I simple change two expression's order [duplicate]

问题 这个问题在这里已经有了答案: ES6 数组解构怪异4 个答案 5年前关闭。 对于以下斐波那契函数,它按预期工作: function fibonacci(n) { var nums = [] var a = b = 1 for (let i = 0; i < n; i++) { [a, b] = [b, a + b] nums.push(a) } return nums } console.log(fibonacci(5)); // outputs: [1,2,3,5,8] 但是在我更改了两个语句的顺序后,它不起作用: function fibonacci(n) { var nums = [] var a = b = 1 for (let i = 0; i < n; i++) { nums.push(a) [a, b] = [b, a + b] } return nums } console.log(fibonacci(5)); // outputs: [1,1,1,1,1] 它出什么问题了? 回答1 这是因为你漏掉了行尾的分号 nums.push(a) 所以它将这两行合并为: nums.push(a)[a, b] = [b, a + b] 这不会重新分配a和b变量,它正在索引一个数组。 你真的应该改掉省略分号的坏习惯。 Javascript 允许这样做

2022-05-15 12:39:08    分类:技术分享    javascript   syntax

ElseIf vs Else If

问题 多年来,我一直在使用Else If在 VBScript 中进行编码...... If a = b Then ... Else If a = c Then ... End If 这似乎按要求工作。 我还在网络上看到了许多使用Else If的网站,但使用ElseIf的 MSDN 除外。 ElseIf与Else If之间有区别吗? 片段 这是我之前编写的代码,可以通过 Classic ASP 正常工作: If IsDate(wD) Then wS = wD Else If wD&"" <> FormatDisplayDate(wS) Then wS = WeekStart(Date()) wD = FormatDisplayDate(wS) End If 这是一段旧代码的片段,由其他人编写...... if opip = "IP" then opip = "In Patient" Else If opip = "OP" then opip = "Out Patient" End If 这些都不是通过编译器运行的,但是,它们都是被解释的。 忽略那个垃圾 - 我搞砸了 IDE 中的搜索和替换。 回答1 该示例代码无法编译并产生编译错误 Microsoft VBScript 编译错误:应为“结束” 正如我所料(正如@ekkehard-horner 在评论中指出的那样) 。

2022-05-14 15:29:17    分类:技术分享    if-statement   vbscript   syntax   semantics

Semicolon missing after extracting DDL via ksh script

问题 运行以下脚本后,输出文件中的语句末尾缺少分号。 我怎样才能把分号也打印出来? 在这种情况下, AUTO之后和RESIZE 146800640之后应该有一个分号 sqlplus -s sys/${sysPwd}@${srcSID} as sysdba<<-EOF>createTS.sql SET SERVEROUTPUT ON SET HEADING OFF SET FEEDBACK OFF SET LONG 9999 SET LINESIZE 999 SET LONGCHUNKSIZE 350 SET PAGESIZE 10000 SELECT DBMS_METADATA.GET_DDL('TABLESPACE','$srcTablespace') FROM DUAL; quit; EOF Cat 结果文件:createTS.sql CREATE BIGFILE TABLESPACE "TSName" DATAFILE '/hostname/db/SID/oradata1/tsname.dbf' SIZE 5242880 AUTOEXTEND ON NEXT 5242880 MAXSIZE 32767M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT

2022-05-13 09:09:27    分类:技术分享    sql   oracle   syntax   ksh

How to add/subtract to value rather than just be that value

问题 使用 C++ 中的 Openframeworks 库,我的发光半径 (max_distance) 由鼠标在屏幕上拖动的拉伸 (mouseDragX) 确定。 它工作正常。 但不是每次我调整它的大小(通过拖动鼠标),我希望它不要从 0 开始并直接跟随鼠标拖动。 max_distance = mouseDragX/2; 而是,如果我已经将鼠标向右拖动以在上一次拖动时说 200,那么下次我拖动鼠标时,进入 max_distance 的值减少该数量的相反方向(负数),而不仅仅是那个数量。 我以为会 max_distance += mouseDragX/2; 但这似乎完全杀死了它 你能帮助我吗? #include "testApp.h" //-------------------------------------------------------------- void testApp::setup(){ ofSetWindowShape(700,700); max_distance = 700; // ofDist didn't work(?) // ofDist(0,0,700,700); ofEnableSmoothing(); ofEnableAlphaBlending(); } //---------------------------------------------

2022-05-12 19:07:14    分类:技术分享    c++   syntax

For which html5 attributes is the "empty attribute syntax" allowed?

问题 http://www.w3.org/TR/html-markup/syntax.html#syntax-attr-empty 说 空属性语法某些属性可以通过仅提供属性名称来指定,没有值 [... which] 完全等同于将空字符串指定为属性的值。 IIRC,布尔属性经常使用它。 但是,“某些属性”指的是什么? 在哪些属性中,哪些元素上允许使用这种语法? 或者:哪里不允许? 我在任何地方都找不到完整的清单。 回答1 空属性语法只是具有名称和空字符串值的属性的简写,它本身并不意味着任何特殊。 因此,除了布尔属性之外,任何允许空值的属性(包括class )都可以使用空属性语法指定,而任何不允许空值的属性(例如id和type )都不能使用空属性语法指定。 您可以通过使用 Validator.nu 比较以下代码段的验证结果来确认这一点。 以下两个片段都应该验证: <!DOCTYPE html><title>Test</title> <body class> <!DOCTYPE html><title>Test</title> <body class=""> 以下两个片段都应该产生相同的验证错误: <!DOCTYPE html><title>Test</title> <body id> <!DOCTYPE html><title>Test</title> <body id=""> 错误

2022-05-12 04:36:17    分类:技术分享    html   syntax   attributes

Parse error: syntax error, unexpected '*' [duplicate]

问题 这个问题在这里已经有了答案: PHP 解析/语法错误; 以及如何解决它们(21 个答案) 6年前关闭。 我的代码: <?php function ci($principle, $rate, $time) { $ci = ($principle * (( (1 + $rate / 100) ** $time) - 1)); echo $ci; } ?> <?php echo ci(10,10,10); ?> 当我运行它时,它会给出以下错误 解析错误:语法错误,第 4 行 D:\Xampp\htdocs\php\functions.php 中的意外 '*' 请告诉我第 4 行的错误是什么( $ci = ($principle * (((1+$rate/100)**$time)-1)); )? 回答1 您的语法是正确的。 问题是您的 PHP 版本。 ** 运算符是在 PHP 5.6 中引入的,您可能有以下内容。 所以要么更新你的 PHP,要么使用 pow()。 回答2 OP 有一个额外的* over (1 + $rate / 100) ** $time) 这导致 PHP 语法错误 Unexpected * within PHP verison < 5.6.0 并且适用于更高版本 function ci($principle, $rate, $time) { $ci = (

2022-05-12 04:17:10    分类:技术分享    php   syntax   syntax-error   exponentiation