In [1]:
f(x)=x+1
Out[1]:
In [2]:
f(2)
Out[2]:
In [3]:
g(x,y)=[x*y+1, x-y]
Out[3]:
In [4]:
g(1,2)
Out[4]:
Il est possible d'utiliser begin-end ou ( ; ) pour délimiter la fonction la dernière valeur calculée est retournée
In [5]:
h(x)=begin
y=2
x+y
end
Out[5]:
In [6]:
h(3)
Out[6]:
In [7]:
h(x)=(y=2;x+y) # equivallent à la première écriture
Out[7]:
In [8]:
h(3)
Out[8]:
In [9]:
function H(x,y)
z=x+y;
z^2/(abs(x)+1)
end
Out[9]:
In [10]:
H(1,2)
Out[10]:
L'usage de return pour fixer la sortie
In [13]:
function Choix(x)
if x>0
return "Positif"
else
return "Négatif"
end
end
Out[13]:
In [14]:
txt=Choix(3)
Out[14]:
In [15]:
x->x^2
Out[15]:
In [16]:
G=x->sqrt(x)
Out[16]:
In [17]:
G(1)
Out[17]:
In [18]:
typeof(G)
Out[18]:
In [20]:
function multi_output(x,y)
return x+y, x-y
end
Out[20]:
In [21]:
a=multi_output(1,2) # un seul argument de sortie qui contient un tuple
Out[21]:
In [22]:
typeof(a)
Out[22]:
In [23]:
a[1]
Out[23]:
In [24]:
a[2]
Out[24]:
In [25]:
a , b =multi_output(1,2) # assignation aux 2 arguments de sortie
Out[25]:
In [26]:
a
Out[26]:
In [27]:
b
Out[27]:
In [28]:
a=1
f(x)=a+x
f(1)
Out[28]:
In [29]:
a=1
function ff(x)
x+a
end
ff(1)
Out[29]:
In [30]:
a=1
function ff(x)
x+a # on utilise a défini en dehors de la fonction
a=2 # on tente de changer la valeur de a... error !
end
ff(1)
In [31]:
a=1
function ff(x)
a=2
x+a
end
ff(1)
Out[31]:
In [32]:
a
Out[32]:
Donc par défaut une variable définie est connue et utilisable par toute fonction appelée (de même à l'intérieure d'une fonction).
Si on redéfinie localement dans la fonction la variable alors "elle écrase localement" la dite variable et en sortie de fonction rien n'est modifié.
Attention à l'utilisation dans la fonction d'une variable extérieure puis d'affecter une valeur à cette variable...
In [37]:
f(x)=x^2 +1
f(1:5) # il aurait fallu définir f(x)=x.^2.+1
La fonction map permet de palier à ce manquement
In [38]:
map(f,1:5)
Out[38]:
In [39]:
f.(1:5)
Out[39]:
In [41]:
map(f,[1 2; 3 4])
Out[41]:
In [42]:
f.([1 2; 3 4])
Out[42]:
In [43]:
g(x,y)=x+y
map(g,0:3,1:4)
Out[43]:
In [44]:
map(g,[1 2;3 4],[2 3;4 5])
Out[44]:
In [46]:
g(f,x)=f(x)+1
Out[46]:
In [47]:
g(sin,1)
Out[47]:
In [ ]: