# \`isdefined\` documentation

**URL:** <https://discourse.julialang.org/t/isdefined-documentation/113067>\
**Category:** General Usage\
**Created:** [April 17, 2024, 1:46pm UTC](https://discourse.julialang.org/t/isdefined-documentation/113067 "2024-04-17T13:46:32Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Marco\_Antoniotti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/marco_antoniotti/32/18697_2.png) [@Marco\_Antoniotti](https://discourse.julialang.org/u/Marco_Antoniotti)\
**Post date:** [April 17, 2024, 1:46pm UTC](https://discourse.julialang.org/t/isdefined-documentation/113067/1 "2024-04-17T13:46:32Z")

</div>

Hi

I am very confused about the documentation of the `isdefined` function.

What exactly is the `index` mentioned in the documentation? Or the symbol (I assume a field in a struct)? The example with `a = 1//2` is not very useful as it stands, given that it does not fully explain what is going on.

MA

---

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [April 17, 2024, 2:08pm UTC](https://discourse.julialang.org/t/isdefined-documentation/113067/2 "2024-04-17T14:08:26Z")

</div>

The fields have an order. You can pick `:num` which is the first one or `:den` which is the second one.

```julia
julia> a = 1//2
1//2

julia> fieldnames(typeof(a))
(:num, :den)

julia> fieldnames(typeof(a))[1]
:num

julia> fieldnames(typeof(a))[2]
:den

```

---

<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:** [April 17, 2024, 2:08pm UTC](https://discourse.julialang.org/t/isdefined-documentation/113067/3 "2024-04-17T14:08:28Z")

</div>

The symbol is explained in the docs, isn’t it? It’s the field name as you suggest. I think the index is just the index of the fields, but I agree the docs could be clearer on this, feel free to make a PR:

```julia
julia> dump(a)
Rational{Int64}
  num: Int64 1
  den: Int64 2

julia> isdefined(a, :num)
true

julia> isdefined(a, 1)
true

julia> isdefined(a, 2)
true

julia> isdefined(a, 3)
false

```

---

<div class="post-metadata">

**Author:** ![Marco\_Antoniotti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/marco_antoniotti/32/18697_2.png) [@Marco\_Antoniotti](https://discourse.julialang.org/u/Marco_Antoniotti)\
**Post date:** [April 17, 2024, 2:37pm UTC](https://discourse.julialang.org/t/isdefined-documentation/113067/4 "2024-04-17T14:37:47Z")

</div>

Thank you all.

Let’s say that your responses should be included in the documentation.

But, apart from that… I have

```julia
julia> qd = 42

```

Pardon my obtuseness, but how exactly am I supposed to check that `qd` is defined? And no, I do not want to use the `@isdefined` macro. Must I use the version with the module as first argument?

Thanks

---

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [April 17, 2024, 2:52pm UTC](https://discourse.julialang.org/t/isdefined-documentation/113067/5 "2024-04-17T14:52:56Z")

</div>

```julia
julia> isdefined(Main, :qd)
true

julia> isdefined(@ __MODULE__ , :qd)
true

julia> isdefined(@ __MODULE__ , :qe)
false

```

---

<div class="post-metadata">

**Author:** ![mnemnion](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mnemnion/32/206596_2.png) [@mnemnion](https://discourse.julialang.org/u/mnemnion)\
**Post date:** [April 17, 2024, 2:56pm UTC](https://discourse.julialang.org/t/isdefined-documentation/113067/6 "2024-04-17T14:56:11Z")

</div>

> [@Marco\_Antoniotti](#):
>
> And no, I do not want to use the `@isdefined` macro.

Why not?

```julia
julia> @isdefined qd
true

```

Looks like the easy way to get what you want.

---

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [April 17, 2024, 2:57pm UTC](https://discourse.julialang.org/t/isdefined-documentation/113067/7 "2024-04-17T14:57:08Z")

</div>

> [@Marco\_Antoniotti](#):
>
> Let’s say that your responses should be included in the documentation.

Anyone is more than welcome to submit a patch to clarify the documentation. The `isdefined` docstring is [in `basedocs.jl`](https://github.com/JuliaLang/julia/blob/master/base/docs/basedocs.jl#L2611-L2650), and you can [click the edit button](https://docs.github.com/en/repositories/working-with-files/managing-files/editing-files) to modify it and propose a change.

---

<div class="post-metadata">

**Author:** ![Marco\_Antoniotti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/marco_antoniotti/32/18697_2.png) [@Marco\_Antoniotti](https://discourse.julialang.org/u/Marco_Antoniotti)\
**Post date:** [April 17, 2024, 3:04pm UTC](https://discourse.julialang.org/t/isdefined-documentation/113067/8 "2024-04-17T15:04:54Z")

</div>

I know it is easy and it does what is _usually_ needed. But the point was to grok `isdefined`.

---

<div class="post-metadata">

**Author:** ![Marco\_Antoniotti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/marco_antoniotti/32/18697_2.png) [@Marco\_Antoniotti](https://discourse.julialang.org/u/Marco_Antoniotti)\
**Post date:** [April 17, 2024, 3:05pm UTC](https://discourse.julialang.org/t/isdefined-documentation/113067/9 "2024-04-17T15:05:45Z")

</div>

Thanks @stevengj . That is a useful suggestion.

---

<div class="post-metadata">

**Author:** ![Marco\_Antoniotti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/marco_antoniotti/32/18697_2.png) [@Marco\_Antoniotti](https://discourse.julialang.org/u/Marco_Antoniotti)\
**Post date:** [April 20, 2024, 7:49am UTC](https://discourse.julialang.org/t/isdefined-documentation/113067/10 "2024-04-20T07:49:08Z")

</div>

Duh! 🥹

Things that happen when your memory is short (and wired a liiiiitle differently).

Thanks.
