Nim의 func(부작용 함수 없음)가 엄격해지다
개요
proc
대체
proc
, 부작용이 없음func
을 명확히 하기 위해정보 출처
Version 1.4.0 released
Write Tracking for Nim (Part 2)
지금까지의 방법
proc add(a,b:int):int =
return a + b
echo add(1,2) # 3
{.noSideEffect.}
샘플링 사용이 부작용이 없음을 명확히 할 수 있음proc add(a,b:int):int {.noSideEffect.}=
return a + b
echo add(1,2) # 3
proc
+{.noSideEffect.}
프라하의 문법당func
으로 사용 가능func add(a,b:int):int =
return a + b
echo add(1,2) # 3
# このコードは有効
type
Node = ref object
data: string
func setData(n:Node, newData:string) =
n.data = newData
let n0 = Node(data:"original")
echo n0.data # original
setData(n0,"changed")
echo n0.data # changed
새 사양(v1.4.0 이후)
다음 임의의 방법에 따라 부작용이 없는 규격을 엄격히 할 수 있다
{.experimental: "strictFuncs".}
샘플링 사용--experimental:strictFuncs
옵션 사용# このコードはコンパイルできない
{.experimental: "strictFuncs".}
type
Node = ref object
data: string
func setData(n:Node, newData:string) =
n.data = newData
var n0 = Node(data:"original")
echo n0.data
setData(n0,"changed")
echo n0.data
func
의 행위가 더욱 직관적이고 함수에 부작용이 없음을 명확히 할 수 있다test.nim(7, 6) Error: 'setData' can have side effects
an object reachable from 'n' is potentially mutated
test.nim(8, 4) the mutation is here
var
를 더해도 func
중의 의도적인 부작용을 허용할 수 있다# このコードは有効
{.experimental: "strictFuncs".}
type
Node = ref object
data: string
func setData(n:var Node, newData:string) =
n.data = newData
var n0 = Node(data:"original")
echo n0.data # original
setData(n0,"changed")
echo n0.data # changed
총결산
func
를 보다 직관적으로 사용할 수 있음Reference
이 문제에 관하여(Nim의 func(부작용 함수 없음)가 엄격해지다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/tauplus/articles/0d34067a86b9608ce8e6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)