2017-09-18 7 views
2

내가 다음 코드의 모든 GUI 요소의 텍스트를 인쇄하는 것을 시도하고있다 :인쇄 밖으로 텍스트

sentlist: ["A" "B" "C"] 

    main: function [slist] [ 
     view collect [ 
      repeat i length? slist [ 
       keep compose [ 
        text (slist/:i) 
        field "" 
        return ]] 
      keep [button "Printall" [ 
       repeat i (2 * length? slist)[ 
        print face/parent/pane/(i)/text ]]]]] 

(main sentlist) 

이 오류없이 모든 권리 실행 text 요소의 텍스트가 제대로 인쇄 out이되지만, fields의 경우 마지막 필드의 항목 만 각 필드에 인쇄됩니다. 문제는 어디에 있으며 어떻게 해결할 수 있습니까? 당신의 도움을 주셔서 감사합니다.

답변

2

field ""은 각 필드에 동일한 문자열을 재사용합니다. 하나의 필드를 변경하면 각 텍스트가 변경됩니다 (효율성상의 이유로 GUI에 반영되지 않음). 줄을 field (copy "")으로 변경하여 고유 한 문자열을 제공 할 수 있습니다.

+0

이것은 정말이 언어의 고유 한 문제입니다! 왜 그곳에 있습니까? – rnso

+0

@rnso Rebol 저자는 [Rebol은 순수한 기능 언어입니까?] (http://www.rebol.com/article/0206.html) 여기에 대해 논의했습니다 : [Rebol a Functional Programming Language? ] (https://softwareengineering.stackexchange.com/questions/187800/is-rebol-a-functional-programming-language). – rgchris

+0

Rebol 3의 [Ren-C] (https://github.com/metaeducation/ren-c) 브랜치는 소스에서 문자 그대로 생성 된 시리즈를 잠급니다. 따라서 위의 경우 오류가 발생합니다. – rgchris