gpt4 book ai didi

d - std.regex.regex() 不纯。为什么?

转载 作者:行者123 更新时间:2023-12-04 05:11:05 24 4
gpt4 key购买 nike

在 D 中 std.regex.regex() 不是纯的:

import std.regex;

pure void test() // test.d(5): Error: pure function 'test' cannot call impure function 'regex'
{
auto r = regex(r"patern123", "g");
}

为什么?

是吗

A. 不够 pure关键字被抛出。

或者

B. 有更深层次的原因

最佳答案

std.regex是一个模块,所以它不能被标记为纯的。

答:
标记功能为pure不会使它纯净。它只是告诉编译器你希望它是纯的,如果函数确实可以变成纯的,它就会完成这项工作。如果它不能是纯的,编译器将引发错误。这里就是这种情况 - test() 不能是纯的,因为 std.regex.regex()不纯 .经验法则 - 纯函数不能调用不纯函数。

B 的答案:
是的,还有更深层次的原因,我相信你可能已经意识到了。作为提醒阅读http://en.wikipedia.org/wiki/Pure_function问问自己你的功能是否正确 test()满足这两个主要规则?为此,自然需要了解 std.regex.regex() 函数的语义......

也许你想问为什么 std.regex.regex() 不纯?
我认为马特已经回答了这个问题。 - std.regex 模块确实维护了一些缓存,并对其进行了变异。

关于d - std.regex.regex() 不纯。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14920685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com