On Tue, Nov 10, 2015 at 9:37 AM, Ben Ward <[email protected]> wrote:
> Hi,
>
> You can get the length of a StepRange:
>
> julia> length(2:1:9)
>
>
> 8
>
>
> But if I try to do so inside a function I get an error about not finding a
> call method:
>
> julia> function myfun(width::Int, step::Int, length::Int)
^^^^^^^^^^^^^
You override the value of `length`here.
>
>
> clip = Int(floor(width / 2))
>
>
> start = 1 + clip
>
>
> stop = length - clip
>
>
> range = StepRange(start, step, stop)
>
>
> return length(range)
>
>
> end
>
>
> myfun (generic function with 1 method)
>
>
>
>
> julia> myfun(3, 1, 10)
>
>
> ERROR: MethodError: `call` has no method matching call(::Int64,
> ::StepRange{Int64,Int64})
>
>
> Closest candidates are:
>
>
> BoundsError()
>
>
> BoundsError(::Any...)
>
>
> DivideError()
>
>
> ...
>
>
> in myfun at none:6
>
>
> I don't know why this is, the range constructed with the function call
> `myfun(3,1,10` should be the same range as 2:1:9. Why is this happening?
>
> Thanks,
> Ben.