Given a script, such as below, which does not compile yet, how can I use #call
to use my Red function from within Red/System?
Red []
pff: function [a [string!] ][print a]
#system [
#call [pff "hello"]
]
There is a type mismatch. What do you need to do to convert the string to the proper Red/System datatype?
To expand on Peter's correct answer, in this particular case, you need to internalize the c-string as a red-string!, using string/load
, like this:
Red []
pff: function [a [string!] ][print a]
#system [
s: "hello"
hello: string/load s 1 + length? s UTF-8
#call [pff hello]
]
Notes:
Red/System's strings are ASCII only for now, so you need to specify UTF-8 as the source encoding format.
You need to pass the size of the c-string accounting for the terminal NUL (hence the + 1
).
The internal API is not documented as it is not finalized. Feel free to ask here or on our other communication channels if you need any info about it.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句