겸손히 묻고 싶습니다 ...상수 값에 대한 var 또는 ref/atom/agent?
"상수 값에 대한 var 또는 ref/atom/agent"는 무엇입니까? 물론, 저는 상수 값에 대해 vars를 사용합니다.
그러나 저는 항상 값이 상수와 같은 역할을 할 때 사용해야 할 것이지만 컴파일 타임 (코드를 읽을 때)보다는 런타임에 할당해야한다고 생각했습니다.
예를 들어, 사용자의 구성 파일에 작성된 일부 Java 등록 정보를 생각해보십시오. 데이터가 코드에 없기 때문에 런타임에 할당해야합니다. 그러나 다른 코드가 참조하기 때문에 데이터를 읽기 전에 정의해야합니다. 이 경우
,내가 사용합니까 'VAR의?
- 내가 정의'VAR의, 또는 (괜찮아요 때) 단지 'VAR의를 선언합니다.
- 그런 다음 옵션 파일을 읽는 함수에 의해 이들 'var'를 다시 정의합니다.
- 하지만 'var'를 덮어 쓰는 것이 끔찍하거나 'var'내부 기능을 정의하는 것이 이상하다고 느낍니다. 수행 할 때
나는 REF/원자/에이전트?
- 내가 심판/원자/에이전트를 할당 'VAR의로를 사용합니다.
- 그러면 ref/atom/agents를 옵션 파일을 읽는 함수로 업데이트합니다.
- 그러나 값이 프로그램 전체에서 사용되므로 비용이 걱정됩니다.
- ... 너무 많은 @ 매크로를 사용하는 것은 다소 짜증이납니다.
무엇을 사용해야하는지 잘 모르겠습니다.
그런 경우 무엇을 사용합니까?
'var 's? 'ref/atom/agent 's? 또는 '지연이야?
미리 감사드립니다.
프로그램이 시작될 때 첫 줄에 동 기적으로 var를 정의하지 않는 이유는 무엇입니까? 이 경우에는 다른 곳의 var를 덮어 쓸 필요가 없습니다. 다른면에서는 글쓰기로 짜증나는 경우 '@ my-var' 어디에서나'@ my-var'를 반환하는 래퍼 함수를 정의 할 수 있습니다 – hsestupin
답변 해 주셔서 감사합니다. var를 동 기적으로 어떻게 정의합니까? 나는 당신이 의미하는 바를 이해하지 못한다고 생각합니다. vars가 동기적인 것이 아니라고 생각했습니다. vars에 ref를 할당하고 초기화를 위해 ref를 재설정 (업데이트) 했습니까? –
당신의 네임 스페이스'ns.with-const'에서 그 첫 번째 코드 줄은'(def my-const (some-computations))'일 것입니다. 따라서이 표현식이'ns.with-const'를 사용하거나 필요로하는 모든 네임 스페이스를 평가할 때까지는 자신의 코드를 평가하지 않습니다. 그리고이 모델에는 경쟁 조건이 없습니다. const가 계산 될 때 - 정의 된 개미가됩니다. 모든 것이 잘 작동합니다. 희망이 설명은 의미가있다 – hsestupin