Help
Type ?x for help on x.
Types
- Integer: Int8, Uint8... UInt128
- Real: Float16, Float32, Float64
typeof(x) returns a DataType which renders as one of the above
typemin(T) and typemax(T) return min/max values
eps(x) returns floating point precision at x
nextfloat(x) and prevfloat(x) return (x+eps(x)) and (x-eps(x))
zero(type) and one(type) produce representation of zero and 1
Constants
- Integer: 0b1100, 0o177, 0xabcd, 1234, -1234
- Real: 2.5e-4 (Float64), 2.5f-4 (Float32)
- Rational:
2//3(extract parts withnumerator()anddenominator - Complex:
1 + 2im - Char:
'A' - String:
"Hello"or byte-arrayb"abc"
Expressions
Things like 2x and 2(x-1)^2 work as you might expect.
Integer division is \div<tab> or "÷"
{>>>} is logical shift
bitwise xor is \xor or "⊻"
Vector operators precede with "." as [1,2,3] .* 5
Conversion with Int64(3.000) but must use Int64(round(3.001))
Strings
Strings allow indexing s[1] or s[begin], BUT NOTE first character is s[1]. Also range s[1:3].
NOTE that indexes may not be sequential due to Unicode. See https://docs.julialang.org/en/v1/manual/strings/
Operator * concatenates strings, as does string(s1,s2,s3...)
Interpolation of any variable as in "$stuff $bother" is supported. Any expression may be interpolated using "$(expr)".
Use triple-quotes for multi-line strings.
Regular Expressions
Very powerful and complete! See https://docs.julialang.org/en/v1/manual/strings/#Regular-Expressions
re = r"^(\d+)\s*(\d+)" m = match( re, "123 456")
typeof(m) is "Nothing" for no match
m.captures is array of captured values
Functions
function f(x,y)
x+y
end
-or-
f(x,y) = x+1
Functions and binding is a very complex topic in julia!
Dictionaries
D = Dict( 'a'=>2, 'b'=>3) # construct haskey( D, 'a') # check for a key true D['z'] = 99 # add a new entry delete!( D, 'z') # delete an entry for k in sort(collect(keys(D))) # iterate over keys in order
The printf problem
There's a macro @printf which works, but doesn't take a variable as a format string.
using Printf @printf "value: 0x%08x\n", 1234
Here's an alternative:
using Printf f = Printf.format"%s 0x%06x\n" Printf.format( f, "hello", 1234) "hello 0x0004d2\\n"
Plots
Install gnuplot:
[ add Gnuplot
Then
using Gnuplot
y = Vector{Float64}()
for x = range(0, 2*pi, length=32)
push!(y,sin(x))
end
@gp y "with linesp"
println("hit return")
readline()
Save to PDF:
save(term="pdfcairo",output="plot.pdf")
CSV files
using CSV
df = CSV.File( "file.csv", normalizename=true)
for row in df
println( row.Quantity) # Quantity is a column name from the header
end
fields = String.( keys( df[1])) # get list of column names
