¿Cuál es la diferencia entre las siguientes dos funciones?
mysin(x) = sin(x)
mysin2(x) = println(sin(x))
mysin2 (generic function with 1 method)
mysin(3)
0.1411200080598672
mysin2(3)
0.1411200080598672
x = mysin(3)
x
0.1411200080598672
x
0.1411200080598672
x = mysin2(3)
x
0.1411200080598672
x
La segunda versión no es útil, en el sentido que no regresa nada; el valor que se calculó se desapereció. Por lo tanto, casi siempre queremos que las funciones no impriman (excepto para depurar el código), sino que regresen valores.
¿Cómo podemos reutilizar código que ya hemos escrito?
No (es decir nunca) copiamos y pegamos.
Más bien, existe una manera fácil y ágil de "guardar" un pedazo de código para que lo podamos reutilizar después: ponerlo en una función. Las funciones existen para hacer disponible el trabajo que ya hemos hecho para que lo podamos reutilizar después.
Haz
2^(-1)
DomainError while loading In[8], in expression starting on line 1 in power_by_squaring at intfuncs.jl:60 in ^ at intfuncs.jl:84
¿Qué pasa? ¿Por qué?
En Julia, siempre debemos intentar que las funciones regresen siempre el mismo tipo de respuesta.
function imprime(x)
println(string(x))
x
end
imprime (generic function with 1 method)
imprime(x==3)
true
true
imprime(x==2)
false
false
x = 3
y = 2
2
imprime(x == 3) && imprime(y == 2)
true true
true
imprime(x == 3) && imprime(y == 1)
true false
false
imprime(x == 2) && imprime(y == 1)
false
false
imprime(x == 3) || imprime(y == 1)
true
true
¿Para qué sirve esto?
a = "1010110110001"
function pos_punto(a)
for i=1:length(a)
# if a[i] == '.'
# println(i)
# end
# pos = i
a[i] == '.' && return i
end
return 0
end
pos_punto (generic function with 1 method)
pos_punto(a)
0
search(a, '.' )
6
search("hola" , '.')
0
typeof("hola")
ASCIIString (constructor with 2 methods)
'.'
'.'
s = "1010"
"1010"
s[2]
'0'
typeof(s[2])
Char
int(ans)
48
'hola'
syntax: invalid character literal while loading In[61], in expression starting on line 1
'α'
'α'
typeof(ans)
Char
s =
syntax: incomplete: premature end of input while loading In[64], in expression starting on line 1
s = "holαβ"
"holαβ"
typeof(s)
UTF8String (constructor with 2 methods)
¿Cómo encontrar los caracteres en la cadena, de manera ingenua?
s[1]
'h'
s[2]
'o'
s[3]
'l'
s[4]
'α'
s[5]
invalid UTF-8 character index while loading In[72], in expression starting on line 1 in next at /usr/local/julia/julia-a05f87b79a/lib/julia/sys.dylib in getindex at string.jl:57
s[4]
'α'
length(s)
5
s[6]
'β'
search(s, 'α')
4
search(s, 'β')
6
nextind(s, 4)
6
@which search(s, 'β')
una_variable_con_un_nombre_muy_largo = 3
3
una_variable_con_un_nombre_muy_largo
3
una_variable_mas = 4
4
una_variable_mas
4
una_wariable = 10
10
una_wariable
10