# Some questions about function (size(i::Int))

**URL:** <https://discourse.julialang.org/t/some-questions-about-function-size-i-int/91093>\
**Category:** General Usage\
**Tags:** function\
**Created:** [December 1, 2022, 1:36pm UTC](https://discourse.julialang.org/t/some-questions-about-function-size-i-int/91093 "2022-12-01T13:36:21Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Xuekui\_wang](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xuekui_wang/32/30746_2.png) [@Xuekui\_wang](https://discourse.julialang.org/u/Xuekui_wang)\
**Post date:** [December 1, 2022, 1:36pm UTC](https://discourse.julialang.org/t/some-questions-about-function-size-i-int/91093/1 "2022-12-01T13:36:21Z")

</div>

I saw a function as follows. Can you tell me what’s the mean of `size(i::Int)=i ==0 ? 3 : 4*i` ?

```julia
function t3(input)
    vect=[]
    size(i::Int)=i ==0 ? 3 : 4*i
    for i in 1: (input)
        append!(vect, size(i))
    end
    return vect
end

t3(5)

```

---

<div class="post-metadata">

**Author:** ![Oscar\_Smith](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oscar_smith/32/25343_2.png) [@Oscar\_Smith](https://discourse.julialang.org/u/Oscar_Smith)\
**Post date:** [December 1, 2022, 1:41pm UTC](https://discourse.julialang.org/t/some-questions-about-function-size-i-int/91093/2 "2022-12-01T13:41:23Z")

</div>

It’s a local function definition. It’s the same as

```julia
function size(i::Int)
    return i==0 ? 3 : 4*i
end

```

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [December 1, 2022, 1:48pm UTC](https://discourse.julialang.org/t/some-questions-about-function-size-i-int/91093/3 "2022-12-01T13:48:54Z")

</div>

Tangential, but because I’ve come across something similar recently: wouldn’t it be better to write

```julia
size(i::Int) = ...

function t3(input)
    ... append!(vect, size(i))
end

```

i.e. define `size` outside of `t3`? Otherwise the function would be re-defined every time `t3` is called, although I’m not sure this makes a difference in practice?

(and for OP: this is a very convoluted way of writing `t3(input) = [i == 0 ? 3 : 4i for i ∈ 1:input]` - you are working on an `Vector{Any}` when initialising things with `[]` which is terrible for performance)

---

<div class="post-metadata">

**Author:** ![Xuekui\_wang](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xuekui_wang/32/30746_2.png) [@Xuekui\_wang](https://discourse.julialang.org/u/Xuekui_wang)\
**Post date:** [December 1, 2022, 1:56pm UTC](https://discourse.julialang.org/t/some-questions-about-function-size-i-int/91093/4 "2022-12-01T13:56:06Z")

</div>

Thank you for you immediately reply. I have known it.  
Local functions like this cost me a lot of time, are there some documents about this?

Thank you again for your help.

---

<div class="post-metadata">

**Author:** ![Xuekui\_wang](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xuekui_wang/32/30746_2.png) [@Xuekui\_wang](https://discourse.julialang.org/u/Xuekui_wang)\
**Post date:** [December 1, 2022, 2:08pm UTC](https://discourse.julialang.org/t/some-questions-about-function-size-i-int/91093/5 "2022-12-01T14:08:47Z")

</div>

Thank you for your advice.  
I tried your first type, it tell me `UndefVarError: i not defined`  
Your second way is OK, it works well.

---

<div class="post-metadata">

**Author:** ![Xuekui\_wang](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xuekui_wang/32/30746_2.png) [@Xuekui\_wang](https://discourse.julialang.org/u/Xuekui_wang)\
**Post date:** [December 1, 2022, 2:14pm UTC](https://discourse.julialang.org/t/some-questions-about-function-size-i-int/91093/6 "2022-12-01T14:14:50Z")

</div>

Sorry,nilshg. I have known your mean, thank you very much.

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [December 1, 2022, 2:32pm UTC](https://discourse.julialang.org/t/some-questions-about-function-size-i-int/91093/7 "2022-12-01T14:32:01Z")

</div>

> [@nilshg](#):
>
> Otherwise the function would be re-defined every time `t3` is called,

This isn’t how closures work. They get defined once per source code definition, not every time they are “executed”.
