블록을 block: [ a: 1 b: 2 ]
에서 [a 1 b 2]
으로 변환하고 싶습니다. 이것보다 쉬운 방법이 있습니까? 그레이엄 애기에서블록의 단어 세트를 단어로 변환하는 방법
map-each word block [ either set-word? word [ to-word word ] [ word ] ]
블록을 block: [ a: 1 b: 2 ]
에서 [a 1 b 2]
으로 변환하고 싶습니다. 이것보다 쉬운 방법이 있습니까? 그레이엄 애기에서블록의 단어 세트를 단어로 변환하는 방법
map-each word block [ either set-word? word [ to-word word ] [ word ] ]
간단하게 유지 :
>> block: [a: 1 b: 2]
== [a: 1 b: 2]
>> forskip block 2 [block/1: to word! block/1]
== b
>> block
== [a 1 b 2]
답변 :
는 R2에서이 작업을 수행 할 수 있습니다 : 나는이 같은 문제가 없었다
>> to block! form [ a: 1 b: 2 c: 3]
== [a 1 b 2 c 3]
그래서이 기능을 썼다. 어쩌면 내가 모르는 간단한 해결책이 있을지도 모른다.
flat-body-of: function [
"Change all set-words to words"
object [object! map!]
][
parse body: body-of object [
any [
change [set key set-word! (key: to word! key)] key
| skip
]
]
body
]
이들은 새로운 블록을 만들지 만 상당히 간결합니다. 알려진 set-word/value
쌍의 경우 :
collect [foreach [word val] block [keep to word! word keep val]]
그렇지 않으면, 당신은 '중 하나를 귀하의 경우와 같이 사용할 수 있습니다
collect [foreach val block [keep either set-word? val [to word! val][val]]]
나는 당신의 map-each
도 자체 상당히 간결 것을 건의 할 것입니다.
이러한'collect keep' 접근법은 매우 우아합니다. – johnk
내가 DocKimbel의 답변을 좋아하지만, 다른 대안을 위해서 ...에 대한
for i 1 length? block 2 [poke block i to word! pick block i]
또는 사용 PARSE :
block: [ a: 1 b: 2 ]
parse block [some [m: set-word! (change m to-word first m) any-type!]]
오 이런 해결책이 이미 제시된 것을 볼 수 없었습니다. 죄송합니다. – endo64
영리한하지만, ... 해킹 된 솔루션. 문자열로 돌아가려면? :// 당신이 그것을 명시한 것처럼 문제에 대한 [필수 복잡성] (http://en.wikipedia.org/wiki/Essential_complexity)이있는 것 같고 질문 종류의 솔루션이 사투리. 그것은 단지 자리를 비 웠을 때의 문제 일뿐입니다. 당신이하고있는 일에 대해 더 이상의 상황을 줄 수 있습니까? – HostileFork
컨텍스트가 rgchris의 트위터 클라이언트를 R3으로 변환하려고합니다. - http://reb4.me/r/twitter - 'sign' 함수에서 r2와 r3 사이의 동작에 차이가 있습니다. 'params : make oauth any [ params []] params : 세 번째 매개 변수를 정렬/건너 뛰기 ('third-body '를 body-of로 바꾼 후에도) : -/ – johnk