编辑: 我发现了问题的一半: 我不能对对象使用“ indexer”符号(my_object[0])。有办法绕过它吗?(我事先不知道过滤器属性的名称,也不想对它们进行迭代)。
my_object[0]
为了使用 dl 函数,您需要为链接器使用-ldl 标志。
下面是 JavaScript 的对应代码:
var i = null; var j = i || 10; //j is now 10
你在日食时是怎么做的?
请注意,逻辑运算符 ||不返回布尔值,而是可以转换为 没错的第一个值。 此外,使用对象数组代替单个对象: var options = { filters: [ { name: 'firstName', value: 'abc' } ] }; var filter = options.filters[0] || ''; // is {name:'firstName', value:'abc'} var filter2 = options.filters[1] || ''; // is '' 可以通过索引访问的。
请注意,逻辑运算符 ||不返回布尔值,而是可以转换为 没错的第一个值。
||
此外,使用对象数组代替单个对象:
var options = { filters: [ { name: 'firstName', value: 'abc' } ] }; var filter = options.filters[0] || ''; // is {name:'firstName', value:'abc'} var filter2 = options.filters[1] || ''; // is ''
可以通过索引访问的。
按 工程项目—— > 物业—— > C/C + + 构建—— > 设定—— > GCC C + + 链接器—— > < br > 图书馆—— > 我发现了问题的一半: 我不能对对象(my _ object [0])使用“ indexer”符号。有办法绕过它吗?
按 工程项目—— > 物业—— > C/C + + 构建—— > 设定—— > GCC C + + 链接器—— > < br > 图书馆—— >
我发现了问题的一半: 我不能对对象(my _ object [0])使用“ indexer”符号。有办法绕过它吗?
不; 顾名思义,对象文字是 对象,而不是数组,所以不能简单地根据索引检索属性,因为它们的属性没有特定的顺序。检索它们的值的唯一方法是使用特定的名称:
var someVar = options.filters.firstName; //Returns 'abc'
或者通过使用 for ... in循环迭代它们:
for ... in
for(var p in options.filters) { var someVar = options.filters[p]; //Returns the property being iterated }
$gcc -o program program.c -l <library_to_resolve_program.c's_unresolved_symbols>
无效合并运算符(? ?)是一个逻辑运算符
很好地描述了为什么-l dl 的位置很重要
const options={ filters:{ firstName:'abc' } }; const filter = options.filters[0] ?? ''; const filter2 = options.filters[1] ?? '';
但是文件里也有一个非常简洁的解释
这将确保如果 filters[0]或 filters[1]是 null或 undefined,那么这两个变量的回退值都是 ''。
filters[0]
filters[1]
null
undefined
''
请注意,空结合运算符不会返回其他类型的虚假值(如 0和 '')的默认值。如果希望说明所有虚假值,则应使用 OR 操作符 ||。
0
Mozilla 文档 Mozilla 文档 Mozilla 文档
Mozilla 文档
这不管用:
gcc -ldl dlopentest.c
但这个可以:
gcc dlopentest.c -ldl
解构方案 这确实是一个恼人的“功能”
这确实是一个恼人的“功能”
问题的内容可能已经改变,所以我会尽量彻底地回答。
解构允许您从任何具有属性的内容中提取值。还可以在空/未定义和名称别名时定义默认值。
const options = { filters : { firstName : "abc" } } const {filters: {firstName = "John", lastName = "Smith"}} = options // firstName = "abc" // lastName = "Smith"
注意: 资本化很重要
当我在编写 herdoc 语法时,我遇到了一些问题,找到了一些 有趣的事实:
$CC -ldl -x c -o app.exe - << EOF #include <dlfcn.h> #include <stdio.h> int main(void) { if(dlopen("libc.so.6", RTLD_LAZY | RTLD_GLOBAL)) printf("libc.so.6 loading succeeded\n"); else printf("libc.so.6 loading failed\n"); return 0; } EOF ./app.exe
如果使用数组,以下是操作方法。
以及所有这些:
$CC -ldl -x c -o app.exe - << EOF
$CC -x c -ldl -o app.exe - << EOF
在这种情况下,将从数组中的每个对象提取 name,并给出它自己的别名。由于对象可能不存在,因此还添加了 = {}。
= {}
const options = { filters: [{ name: "abc", value: "lots" }] } const {filters:[{name : filter1 = "John"} = {}, {name : filter2 = "Smith"} = {}]} = options // filter1 = "abc" // filter2 = "Smith"
$CC -x c -o app.exe -ldl - << EOF
$CC -x c -o app.exe - -ldl << EOF
更多详细教程
但是,对于 CC=gcc,只有最后一个变体有效; -ldl在 -之后(stdin 参数符号)。
CC=gcc
-ldl
-
浏览器支持 92% 2020年7月
星号: 检查 浏览器兼容性,如果您确实需要支持这些其他浏览器,请使用 Babel。