In Julia, a value accessed from a matrix failed to be used as an argument in a function

Viewed 45

First, I have a function called permeability.

# permeabiliy function
# L is short for the Lable  
mu_0 = 4 * pi * 10^(-7);
mu_r_core = 50;
mu_r_air = 1;
L = Int16; 
function permeability(L)
    if L in 1:4
        if L !== 3 
            return mu = mu_r_air * mu_0
        else
            return mu = mu_r_core * mu_0
        end
    else
        println("null") #print output in a new line
    end
end

Then, I have a matrix called domain, which is shown below,

 domain
 2392-element Array{Int16,1}:
 1
 1
 3
 1
...

When I called permeability(domain[3]), the output is,

L = domain[3]
permeability(L)

the output is

1.2566370614359177e-6

However, when I simply called permeability(3),

permeability(3)

the output is

6.283185307179588e-5

So, it seems that the value passed from matrix domain is just "1", but in this case, domain[3] should be 3 and the result should be the same in these 2 cases.

Can someone please tell me where I was wrong?

1 Answers

The problem is that your array stores Int16 while 3 is an Int64. L!==3 requires L to be of the same type as 3 ie Int64. You wanted instead L!=3. Your confusion probably comes from the fact that != is the inverse of == while !== is the inverse of ===

Related