do %demo/main.red就可以了。mkdir demo && echo "Red[] print 1" > demo/test.red && red demo/test.redRed[] print 1输入到demo文件夹下的test.red文件中,**>**可以理解为**输入到**,最后&&之后的就是运行命令了。do %clock.red.txtdraw函数里写循环啊x: 10 y: 10 draw-cmds: make block! 100 loop 20 [ append draw-cmds reduce ['line as-pair x y as-pair x y + 80] x: x + 10 ] view [base 210x100 draw draw-cmds]
’line 像这种语法,line前面加单引号是什么意思呢append my-draw reduce ['line-cap 'round 'line as-pair x y as-pair x y + 10]我稍微改了一下,line-cap 和round都需要加单引号才行Returns a copy of a block, evaluating only parens. *** Script Error: declare has no value book: object [
title: author: none
show: does [print [mold title "was written by" author]]
]x不是正常的,所以报错了node5: [ father: "马泰亮" suns: ["马守清"] generation: "泰" ]
node5: object [ father: "马泰亮" suns: ["马守清"] generation: “泰” ]
qrcode: write/binary append getQrcodeURL accessKey [
POST [] append append append append "{^"path^":^"pages/index/index?deviceSN=" sn/text "&devicePassword=" password/text "^"}"
]
write/binary %qrcode.jpg qrcode*** Script Error: invalid argument: append *** Where: write *** Stack: view do-events do-actor do-safe
[] 里是数据,不是代码,所以里面不会执行的data: append append append append "{^"path^":^"pages/index/index?deviceSN=" sn/text "&devicePassword=" password/text "^"}"
qrcode: write/binary append getQrcodeURL accessKey compose [POST [] (data)]view [
sn: field "ET00001" return
button "click me" [
data: append append %qrcode- sn/text ".jpg"
print data
]
]qrcode-ET00001.jpg qrcode-ET00001.jpgET00001.jpg qrcode-ET00001.jpgET00001.jpgET00001.jpg
append append copy %qrcode- sn/text ".jpg"Show 71 more pages...没有反应print 函数就是这么做的。#( …) 语法糖吗remove next my-block是删除的第二个元素>> my-block: [1 2 3] == [1 2 3] >> my-block: take/part my-block (length? my-block) - 1 == [1 2] >> my-block == [1 2]
take/last直接就把最后一个删掉了呀,厉害TAKE is an action! value 所谓的action! value是不是会有副作用的>> a: [1 2 3 4 5 6] == [1 2 3 4 5 6] >> idx: 3 == 3 >> a: append append [] take/part a (idx - 1) remove a == [1 2 4 5 6]
remove at a idx也是一样的咯>> a: [1 2 3 4 5] == [1 2 3 4 5] >> at a 3 == [3 4 5] >> take at a 3 == 3 >> a: [1 2 3 4 5] == [1 2 3 4 5] >> remove at a 3 == [4 5]
map function[item] [item/1] a extract/index/into item 2 1 [] 这个extract看起来不怎么直观,extract/index/into [1 2 3 4 5 6] 2 1 [] 返回的结果是[1 3 5]red my-script.red 我的参数my-script.red里怎么拿到我的参数>> ? for
USAGE:
FOR 'word start end bump body
DESCRIPTION:
Repeats a block over a range of values.
FOR is a function value.
ARGUMENTS:
word -- Variable to hold current value (Type: word)
start -- Starting value (Type: number series money time date char)
end -- Ending value (Type: number series money time date char)
bump -- Amount to skip each time (Type: number money time char)
body -- Block to evaluate (Type: block)native!: make datatype! #get-definition TYPE_NATIVE action!: make datatype! #get-definition TYPE_ACTION
lowercase,也像是函数i: i + 1loop 10 [view/no-wait],给GUI event loop一些时间处理消息quit: func [ "Stops evaluation and exits the program" /return status [integer!] "Return an exit status" ][ #if config/OS <> 'Windows [ if system/console [system/console/terminate] ] quit-return any [status 0] ]
#if config/OS什么意思呀?在red终端里config/OS 没有定义,#if是预编译指令?flw at waker in ~/study/red $ red foo.reb Hello, world! flw at waker in ~/study/red $ ./foo.reb ** Script Error: Invalid compressed data - problem: -3 ** Near: script: decapsulate if none? script flw at waker in ~/study/red $ cat foo.reb #! /usr/bin/env red Red [] print "Hello, world!" flw at waker in ~/study/red $
red foo.reb 可以执行,但是用 shebang 就不行。routine函数是干什么用的呀?看源码只有一句话routine: func [spec [block!] body [block!]][ cause-error 'internal 'routines [] ]
Red [
Title: "Jackal playing around with Red lang"
]
view [
style done: button "Done"
field1: field hint "input here" return done [unview]
button 300 "open second window!" [
size_of_2nd_window: as-pair 200 200
view [ size size_of_2nd_window title "Second Window" text1: button "field1/text"
react [
text1/text: field1/text
l: attempt [(length? field1/text) * 10]
text1/size: attempt [as-pair l 20]
]
]
]
]