
Dear ChucKers, 1st of all I'm a newbie to ChucK (Many thanks to Steve who brought me here). I bumped into a problem regarding static strings, which would really not have been in my way if I designed it another way, but I still feel it important enough. Here is the story. I wanted to create a function in a stand-alone .ck module to load my instrument samples from disk. So I designed my loader class in *instr_loader.ck* like this:
public class Instr_loader { "path/to/instrument" => static string m_p_instr;
fun static string get_instr {return m_p_instr;} }
For some reason I just wanted to test the static flavor of ChucK, there is really no reason to use a static member here I must confess. Then my client code *main.ck* looks like this:
Instr_loader.get_instr() => string path_instr;
when I run both .ck's, I will get:
[Instr_loader.ck]:line(3): cannot declare static non-primitive objects (yet)... [Instr_loader.ck]:line(3): ...(hint: declare as ref (@) & initialize outside for now)
Then I change the code with the reference to:
"some/path" => static string @ m_p_loop
Then I run
chuck Instr_loader.ck main.ck
and get this: [Instr_loader.ck]:line(3): cannot declare references (@) of primitive type
'string'... [Instr_loader.ck]:line(3): ...(primitive types: 'int', 'float', 'time', 'dur')
So is there a reason why string is not part of primitive types?
BTW: it works perfectly using string as normal class member. I'm just
interested
in this problem here.
Thank you and hope ChucK will chuck it all up~!
Beinan
On Sun, Dec 7, 2008 at 8:09 PM, Stephen Sinclair
Yeah, but you have to make it a static function of a public class. The class model in ChucK is still a little awkward, but public classes can be instantiated in other files. Only one public class can be defined per file!
Steve
On Sun, Dec 7, 2008 at 7:51 PM, Beinan Li
wrote: Hi Steve,
Should be a newbie question: In ChuCK, can you define a function in a single .ck file and call it from another .ck like in Matlab?
Thanks.
Beinan