On Thursday, March 24, 2016 11:42:53 AM new to Julia wrote:
> Thank you very much for your reply. I am wondering that if I put two
> functions in two files (same as Matlab did), does it slow the coding speed?
> If not, how can I use variables already defined in one function?

You can't generally do this, with the obvious exception of passing them back 
in the outputs of the function. This is what is called "scope." If I write one 
function that sets i=1 internally, you don't want that "contaminating" the 
notion of i for other functions. So the fact that julia doesn't allow what 
you're asking is not a weakness in julia; it's considered good design, and 
every language I know of (which is not very many :-) ) does it this way.

Best,
--Tim

> 
> On Thursday, March 24, 2016 at 1:34:08 PM UTC-5, Tim Holy wrote:
> > We usually talk about calling "functions" rather than "files." If you're
> > coming
> > from a Matlab background, one thing to note about julia is that you can
> > put
> > 
> > multiple functions in one file:
> >     square_and_mult_by_c(x, c) = c*x*x
> >     
> >     smc(X::AbstractVector, c) = [square_and_mult_by_c(x, c) for x in X]
> > 
> > Note the second function calls the first, but you can put both of these in
> > the
> > same disk file. Once loaded, you can also call either of these functions
> > from
> > the command line.
> > 
> > Functions can have more than one argument, so you can pass both `x` and
> > `c`
> > from one function to another. You might also be interested in the manual
> > sections on default and keyword arguments.
> > 
> > Best,
> > --Tim
> > 
> > On Thursday, March 24, 2016 09:29:16 AM new to Julia wrote:
> > > Got it. Thank you so much. I am wondering that what about variable? I
> > 
> > may
> > 
> > > need to define it in the function, right? How to make it be called by
> > 
> > other
> > 
> > > files?
> > > 
> > > On Thursday, March 24, 2016 at 1:30:26 AM UTC-5, Uwe Fechner wrote:
> > > > If c is a constant, that you want to define in the file test.jl, than
> > 
> > you
> > 
> > > > can define it e.g. at the top of the file
> > > > OUTSIDE of the function like this:
> > > > const c=2
> > > > 
> > > > On Thursday, March 24, 2016 at 5:42:24 AM UTC+1, new to Julia wrote:
> > > >> Thank you so much for your reply. I am still not very clear about
> > 
> > what to
> > 
> > > >> do. Could you explain to me again?
> > > >> On Wednesday, March 23, 2016 at 2:48:40 PM UTC-5, Christopher
> > 
> > Alexander
> > 
> > > >> wrote:
> > > >>> No, you can call files using "include", but you are only going to
> > > >>> import essentially the functions, types, and global variables
> > 
> > defined in
> > 
> > > >>> those files (you should not include a file inside of a function).
> >  
> >  You
> >  
> > > >>> do
> > > >>> see though how your variable "c" in "test" would not be accessible
> > > >>> anywhere
> > > >>> else, right?
> > > >>> 
> > > >>> Chris
> > > >>> 
> > > >>> On Wednesday, March 23, 2016 at 3:39:10 PM UTC-4, new to Julia
> > 
> > wrote:
> > > >>>> Thanks for your reply. Does it mean that calling files in Julia is
> > > >>>> impossible?
> > > >>>> 
> > > >>>> On Wednesday, March 23, 2016 at 1:57:16 PM UTC-5, Christopher
> > 
> > Alexander
> > 
> > > >>>> wrote:
> > > >>>>> How is test2 supposed to know what "c" is?  It is only defined
> > 
> > inside
> > 
> > > >>>>> the scope of the function "test", so it won't be accessible
> > 
> > anywhere
> > 
> > > >>>>> else.
> > > >>>>> 
> > > >>>>> Chris
> > > >>>>> 
> > > >>>>> On Wednesday, March 23, 2016 at 2:41:29 PM UTC-4, new to Julia
> > 
> > wrote:
> > > >>>>>> I have a question for calling files in Julia:
> > > >>>>>> 
> > > >>>>>> I have two jl files. And I can call one file from the other file.
> > > >>>>>> However, the variable or constant defined in that file cannot be
> > 
> > used
> > 
> > > >>>>>> in
> > > >>>>>> the other file. I am wondering that how to fix this? The
> > 
> > following is
> > 
> > > >>>>>> a
> > > >>>>>> simple example.
> > > >>>>>> 
> > > >>>>>> function test(x)
> > > >>>>>> 
> > > >>>>>>   c=2;
> > > >>>>>>   y1=6*x;
> > > >>>>>>   y2=x/5;
> > > >>>>>>   y1,y2
> > > >>>>>> 
> > > >>>>>> end
> > > >>>>>> pwd()
> > > >>>>>> 
> > > >>>>>> 
> > > >>>>>> ## test and test2 are used for calling functions in Julia
> > > >>>>>> function test2(x)
> > > >>>>>> 
> > > >>>>>>   include("test.jl")
> > > >>>>>>   yold,ynew=test(x/c);
> > > >>>>>>   y3=yold+10;
> > > >>>>>>   y4=ynew-10;
> > > >>>>>>   yold2,ynew2=test(x)
> > > >>>>>>   y5=yold2+20;
> > > >>>>>>   y6=ynew2-20;
> > > >>>>>>   y3,y4,y5,y6
> > > >>>>>> 
> > > >>>>>> end
> > > >>>>>> y3,y4,y5,y6=test2(100)
> > 
> > > >>>>>> However, when I run this test2, there is a error comes out:
> > saying
> > 
> > > >>>>>> that c is not defined.
> > > >>>>>> 
> > > >>>>>> Thank you very much.

Reply via email to