World: r3wp
[Rebol School] Rebol School
older newer | first last |
Janko 24-Feb-2009 [2400] | well, it's not the nicest function probably but I am tired and just need it to work |
Geomol 24-Feb-2009 [2401] | Well, it does work, so you can be happy! :-) |
Gregg 24-Feb-2009 [2402] | There's nothing built in to do that Janko. |
Henrik 24-Feb-2009 [2403] | Gabriele once wrote a function for this. I can't remember if it's called pad-decimal or form-decimal. |
Gregg 24-Feb-2009 [2404x2] | Yes, there are a number of them out there. |
add-seps: func [ "Insert group separators" str [any-string!] /with sep [string! char!] /reb "Use REBOL group separator" ][ sep: any [sep all [reb #"'"] #","] str: skip any [find str "." tail str] -3 while [not head? str] [ insert str sep str: skip str -3 ] str ] | |
PatrickP61 25-Feb-2009 [2406] | Simple Question: I want to assign a specific script name to the word RUN and have it execute it whenever I type it into the console. RUN: do %script.r But upon the assignment, it evaluates the expression and executes it. So I tried it in a block as RUN: [do %script.r] but this returns == [do %script.r] I can do this: IT: %script.r and then type DO IT to perform the script, but I want a way to combine the DO and the IT together. Any ideas? |
[unknown: 5] 25-Feb-2009 [2407] | run: does [do %script.r] |
kib2 25-Feb-2009 [2408] | Isn't RUN already a native function ? |
PatrickP61 25-Feb-2009 [2409] | Thank you Paul. Perfect. |
Geomol 25-Feb-2009 [2410] | Yes, RUN is native, but you can redefine it, if you like. |
[unknown: 5] 25-Feb-2009 [2411] | Yes it is but I don't believe it is of any use. |
PatrickP61 25-Feb-2009 [2412] | It is not in r3, alpha 35 |
[unknown: 5] 25-Feb-2009 [2413] | I think it was supposed to be a winexecute type of function. |
kib2 25-Feb-2009 [2414] | ok, it's clearer now. |
Henrik 25-Feb-2009 [2415] | I think RUN is extensively used in IOS, but I can't be certain. |
Geomol 25-Feb-2009 [2416x4] | Try source does and you see, DOES simply makes a function. So instead of using DOES, you could also have written: run: func [] [do %script.r] , but of course DOES is easier and shorter in this case. |
And now you're at it, try source func and see how similar to DOES it is. | |
And the last one in this group of function-defining functions, try ? has source has | |
I use FUNC, DOES and HAS a lot in my scripts. | |
PatrickP61 25-Feb-2009 [2420] | Good to know -- Thank you |
Geomol 25-Feb-2009 [2421x2] | welcome |
A little tutorial on HAS, functions and objects. Let's say, I wanted to make a function with a local variable, that works like a counter, so 1 is added to it every time, I call my function. This doesn't work: >> f: has [a] [a: 0 a: a + 1] >> f == 1 >> f == 1 because a has to be defined (given a value and by that a datatype), before I can use it, and I need to use it, when I add 1. So I can use an object: >> o: make object! [a: 0 f: does [a: a + 1]] >> o/f == 1 >> o/f == 2 But there is a trick to do the same thing with HAS and without making an object: >> f: has [a] [a: [0] a/1: a/1 + 1] >> f == 1 >> f == 2 The thing is, that a is giving a block with zero inside the first time. The second time, I call f, a is just the same block (part of memory), and the value inside isn't touched (it is 1 now), so it works. I can see the block inside my function with: >> source f f: func [/local a][a: [2] a/1: a/1 + 1] and we see, a is a block with 2 inside, because I've called my function 2 times. | |
PatrickP61 25-Feb-2009 [2423x2] | If you used a: [0], doesn't this assign a zero to the block for a? |
I gotta play around with that | |
Geomol 25-Feb-2009 [2425x4] | a: [0] simply mean, a become this block with zero inside, if a isn't already this block. If a already is this same block, this same part of memory, it has no effect. To always make a block with zero inside, you need to use COPY or REDUCE. |
I was often confused by this, I remember. | |
When you get used to it, it's pretty smart. | |
This is only within functions. If you write a: [0] at the console prompt, a become a new block with zero inside (you typed a new block, so it isn't the same, and it kinda makes sense). :-) | |
kib2 25-Feb-2009 [2429] | >> print abc ** Script Error: abc has no value Ok, no problem I understand >> print <abc> <abc> Why does this work ? |
Geomol 25-Feb-2009 [2430x2] | abc is seen as a word, and it doens't have a value. <abc> is a tag! datatype, like "abc" is a string datatype: >> type? <abc> == tag! |
and it also is a series, like strings are series: >> second <abc> == #"b" | |
kib2 25-Feb-2009 [2432] | Geomol: I wasn't aware there was a tag type ! |
Henrik 25-Feb-2009 [2433x2] | kib2: build-tag [img src dot.gif] |
kib2, to see all types: ? datatype! | |
kib2 25-Feb-2009 [2435] | Really useful : thanks ! |
Geomol 25-Feb-2009 [2436] | I've forgot, what a symbol! datatype is!? |
kib2 25-Feb-2009 [2437] | s there any 'Challenge' channel for submitting a problem ? |
Geomol 25-Feb-2009 [2438] | Puzzles |
kib2 25-Feb-2009 [2439] | Geomol: ok, thanks. |
Geomol 25-Feb-2009 [2440x2] | And answers go to Puzzle Answers |
And people expect rewards. ;-) | |
kib2 25-Feb-2009 [2442x2] | All my gratitude ! |
I already solved it, but it's not nice (and maybe faulty) | |
PatrickP61 25-Feb-2009 [2444x5] | Another question: How do you setup Rebol code to be performed when a button is pressed? Lets say I want a VID to show a list of websites to open to, and I set the default to HULU. I have the following to setup the correct url: k-prefix: [http://www.] k-suffix: [.com] txt-site: [hulu] url-site: to-url ajoin [k-prefix txt-site k-suffix] |
OK, that works when I do a browse url-site | |
But when I put it after a button like this: group [ button "Open" browse url-site <-- this code works only if it is done before the VIEW button "Reset" reset button "Cancel" close | |
I tried to replace the browse url-site with browse to-url ajoin [k-prefix txt-site k-suffix] to no avail. Is there a way to "predefine" the code above the VIEW so that when the button is pressed, it will perform the desired task like button "Open" format-and-browse-site <-- where this has been set to do the url-site assignment and browse funtions? | |
I'm guessing this may have something to do with the DO , DOES, REDUCE, or other such functions | |
Henrik 25-Feb-2009 [2449] | Is this R2 or R3? |
older newer | first last |