这个哈希是做什么的?

问题描述 投票:0回答:1

我是 SAS 新手,不太理解以下代码。

DATA my_table;
     IF _n_=1 THEN DO;   
        DECLARE hash my_hash(hashexp: 4,dataset: "my_dataset");
        rc = my_hash.definekey("my_var1");
        rc = my_hash.definedata("my_var2","my_var3");
        rc = my_hash.definedone();
        CALL missing(rc, my_var1,my_var2,my_var3);
    END;

    SET my_other_dataset;
RUN;

给我这段代码的人说它正在执行“哈希连接”。根据我所做的研究,hasexp:4 意味着我们使用 2^4 个“桶”来存储哈希值。我真正不明白的是“rc=”部分。这是怎么回事?

sas
1个回答
0
投票

“rc”通常是“返回代码”的简写。 Define...() 方法实际上并不需要将其结果返回到返回代码中。它更常用于其他哈希方法,例如.find() 或 .check() 来确定哈希查找是否成功。

此外,代码实际上并未在哈希表中执行任何查找,因为没有 .find() 或 .check() 方法调用。它只是将“my_dataset”加载到哈希表中。

我希望它看起来更像下面这样:

数据 my_table;
     如果 _n_=1 那么做;
        声明哈希 my_hash(hashexp: 4,数据集: "my_dataset");
        rc = my_hash.definekey("my_var1");
        rc = my_hash.definedata("my_var2","my_var3");
        rc = my_hash.defineone();
    结尾;

    设置我的其他数据集;

    呼叫缺失(rc,my_var2,my_var3);

    /* 假设 my_var1 在 'my_other_dataset' 中 */
    rc = my_hash.find() ;

    /* 如果在 my_dataset 中找到 my_other_dataset 中的 my_var1 的值,则 rc 将等于 0,
       my_var2 和 my_var3 将使用来自
       哈希表 */
跑步;
© www.soinside.com 2019 - 2024. All rights reserved.