4

the example calculator에서 사용 (REBOL 전통적하지 않는)Rebol3 예 계산기를 해결하는 통상의 수학 연산자 우선 순위

REBOL [title: "Calculator"] 
do %r3-gui.r3 
stylize [ 
    btn: button [ 
     facets: [init-size: 50x50] 
     actors: [on-action:[set-face f join get-face f get-face face]] 
    ] 
] 
view [ 
    hgroup [ 
     f: field return 
     btn "1" btn "2" btn "3" btn " + " return 
     btn "4" btn "5" btn "6" btn " - " return 
     btn "7" btn "8" btn "9" btn " * " return 
     btn "0" btn "." btn "/" btn "=" on-action [ 
      attempt [set-face f form do get-face f] 
     ] 
    ] 
] 

을 ... 생성 프로그램 *는 더 높은 우선 순위를 갖는 수학 식을 평가하지 않는다 +보다. 예 : 2 + 3 * 4은 14 대신 20을 제공합니다.

Rebol3에는 거의 모든 다른 환경에서 수학 식을 평가하는 새로운 기능이 포함되어 있다고 생각했습니다. 그게 사실이야? 그렇다면, 상당한 양의 변경없이 위의 코드를 사용할 수 있습니까?

+2

Rebol 3에'expr'를 추가하면 올해 초 * wish *로 게시되었습니다. http://curecode.org/rebol3/ticket.rsp?id=2120 – draegtun

답변

4

Rebol 3에는 정식 우선 순위에 따라 운영자를 평가하는 특정 기능이 있습니다. (필자는이를 기쁘게 생각합니다.) 이러한 기능을 구현하려는 시도가 있지만 in the wild입니다. 이러한 함수를 찾으려면 "=" 버튼의 on-action 블록에서 do에서 do-expression (여기서는 do-expression이라고 말합니다) 평가기를 변경하면됩니다.

1

평가할 정상적인 순서가 최고라고 말한 사람은 누구입니까? 'wiseguy'는 일단 잘못 처리 할 수 ​​없기 때문에 나왔습니다. 불행히도 그는 다른 사람들보다 강했고 그가 한 일을하지 않는다면 머리를 부딪 칠 위험이 있습니다. 그래서 우리는 오늘날 그 곱셈 그들이 배치 된 순서에도 불구하고 추가를 앞당긴다. Rebol 반란군! )

+0

거의 모든 어린이가 이 '실수'는 어쩌면 규칙이 자의적이고 반 직관적 일 수 있습니다. 그리고 왼쪽에서 오른쪽으로 평범하지 않은 경우 순서를 지정하는 괄호가 있으므로 잘못된 규칙이므로 규칙을 포기해야합니다. – iArnold

+0

아마도 충분한 인수, 아마도 (나는 http://stackoverflow.com/questions/17154700/why-do-languages-have-operator-precedence?rq=1 다음 글을 읽으려고합니다. .). 그러나 나는 그것이 최고 다라고 결코 주장하지 않았다. 나는 지금 내가 익숙한 방법을 만들거나 다른 사람들이 선호하는 방법을 궁금해했다. – Kev

+0

c.f. 다항식 작성에 대한 http://stackoverflow.com/users/288875/andre-holzner ... – Kev