TDPL, p. 167 :이 순수 함수가 비공개 상태를 어떻게 수정할 수 있습니까?
한 함수에서 가변 상태 완전히 그대로 일시적인 (즉, 스택에 할당) 및 전용 (즉, 그 더러운 수 함수를 참조하여 함께 전달되지 않음), 그 기능은 순수한 것으로 간주 될 수 있습니다. 이 스택에, 올바른 때문에
import std.stdio : writeln;
struct M{
int[4] _data;
pure ref int opIndex(size_t i){ return _data[i]; }
}
pure M foo(ref M m){
m[0] = 1234;
return m;
}
void main(){
M m1 = M([7, 7, 7, 7]);
writeln(m1);
foo(m1);
writeln(m1);
}
// output:
// M([7, 7, 7, 7])
// M([1234, 7, 7, 7])
변경이 용이 한 상태가 일시적입니까? 그러나 그것은 사적인 것이 아닙니다. 그렇다면 은 어떻게 수정 가능합니까 m1
?
필자는 [태그 : 순수] 태그를 정리하려고 시도했습니다. 때로는 순수 가상 함수, 때로는 [순수] (http://beebole.com/pure/) 및 때때로 [순수] ] (http://en.wikipedia.org/wiki/Pure_(programming_language)) 등이 있습니다. 하지만 [태그 : d]에 대해서는 아무 것도 모릅니다. 내 태그 편집이 적절한 지 확인할 수 있습니까? 이 질문에 대해 [태그 : 순전히 기능을 수행 할 수 있습니까] - [태그 : 순수 함수]를 만들었으므로 [태그 : 순전히 기능]이 작동하면 기존 태그를 사용하는 것이 더 좋을 것이라고 생각합니다. –
@RichardJPLeGuen [기능적 순도] (http://en.wikipedia.org/wiki/Pure_function)에서와 같이 순전히 순수한 함수가이 질문에 대해 작동합니다. 순전히 기능적이지, 순전히. – Arlen
고마워, @ 알렌! –