CAPI 识别空符号
C API identify null symbol
我有以下函数来识别空符号,其中ns
应该代表空符号。
#include"k.h"
K test (K x) {
K ns = ks("");
if (abs(x->t) != KS) {
R krr("type");
}
if (x->t > 0) {
K res = ktn(KB,x->n);
for (int i=0;i<x->n;++i){
if (kK(x)[i] == ns) {
kG(res)[i] = 1;
}
else {
kG(res)[i] = 0;
}
}
R res;
}
else {
if (x == ns) {
R kb(1);
}
else {
R kb(0);
}
}
}
检查参数 x
(或 arg x
的元素 kK(x)[i]
)与 ns
的相等性不符合我的预期。
q)`test set `:test 2: `test,1
`test
q)test ``a`b
000b
// should be 100b
如何正确执行此比较?
你最好比较底层的字符数组而不是整个 K 对象
还请记得在完成后删除对 ns 的引用以避免内存泄漏
K test(K x) {
K ns = ks("");
if (abs(x->t) != KS) {
R krr("type");
}
if (x->t > 0) {
K res = ktn(KB, x->n);
for (int i = 0; i<x->n; ++i) {
if (kS(x)[i] == ns->s) {
kG(res)[i] = 1;
}
else {
kG(res)[i] = 0;
}
}
r0(ns);
R res;
}
else {
if (x->s == ns->s) {
r0(ns);
R kb(1);
}
else {
r0(ns);
R kb(0);
}
}
我有以下函数来识别空符号,其中ns
应该代表空符号。
#include"k.h"
K test (K x) {
K ns = ks("");
if (abs(x->t) != KS) {
R krr("type");
}
if (x->t > 0) {
K res = ktn(KB,x->n);
for (int i=0;i<x->n;++i){
if (kK(x)[i] == ns) {
kG(res)[i] = 1;
}
else {
kG(res)[i] = 0;
}
}
R res;
}
else {
if (x == ns) {
R kb(1);
}
else {
R kb(0);
}
}
}
检查参数 x
(或 arg x
的元素 kK(x)[i]
)与 ns
的相等性不符合我的预期。
q)`test set `:test 2: `test,1
`test
q)test ``a`b
000b
// should be 100b
如何正确执行此比较?
你最好比较底层的字符数组而不是整个 K 对象
还请记得在完成后删除对 ns 的引用以避免内存泄漏
K test(K x) {
K ns = ks("");
if (abs(x->t) != KS) {
R krr("type");
}
if (x->t > 0) {
K res = ktn(KB, x->n);
for (int i = 0; i<x->n; ++i) {
if (kS(x)[i] == ns->s) {
kG(res)[i] = 1;
}
else {
kG(res)[i] = 0;
}
}
r0(ns);
R res;
}
else {
if (x->s == ns->s) {
r0(ns);
R kb(1);
}
else {
r0(ns);
R kb(0);
}
}