블로그 API를 만들고 있고 Coldfusion에서 구조체 배열을 만들려고 할 때 매우 이상한 문제가 있습니다. 최상위 배열에는 구조체로 게시물이 포함되며 해당 게시물 아래에있는 모든 주석의 배열 인 struct .comments가 구조체로 포함됩니다.구조체 배열 생성 관련 문제
다음 코드의 각 요소는 개별적으로 작동합니다. 하지만, 어떻게 든 그들을 함께 넣을 때 구조체의 배열 등을 포함하는 무한 중첩 된 배열로 끝납니다 ... 게시물의 최상위 배열에있는 마지막 요소 만 전부입니다.
<cfset posts = VARIABLES.postDao.getBlogPosts(argumentCollection=arguments) />
<cfset result = arraynew(1) />
<cfloop index="i" from="1" to="#arrayLen(posts)#">
<cfset post = posts[i].getInstance()>
<cfset StructInsert(post, 'comments', getComments(post.postId))>
<cfset ArrayAppend(result, post)>
</cfloop>
getBlogPosts는 Post Bean의 배열을 리턴합니다.
bean.getInstance()는 bean의 모든 데이터가있는 struct를 반환합니다.
getComments (id)는 post [id]에 대한 모든 주석 (structs) 배열을 반환합니다.
이들 각각은 의도 한대로 작동하며 문제없이 다른 곳에서 사용됩니다.
Array containing Post
. Post.comments containing array of comments + Post on end
. . Post.comments containing array of comments + Post on end
. . . etc...
var/local 범위를 지정 했습니까? –
나는 아니었지만 변수에 변수 범위 지정을 추가하여 변수를 고정했습니다. 나는 그것을 정정하는 방법을 정직하게 생각하지 않습니다. – Phil
범위를 지정하지 않으면 ACF는 각 변수를 공유'variables' 범위에 넣습니다. 따라서 해당 구성 요소의 모든 함수는 동일한 변수에 액세스합니다. 따라서 더 많은 함수를 호출하여 반복 할 때마다 초기 변수가 매번 덮어 쓰여집니다. var 키워드를 사용하면, 그것들을'local' 스코프에 넣습니다. 각 함수는 그 함수 내에 만 존재하는 로컬 스코프를 가지고 있습니다. –