# How to call a function with a keyword argument whose name is stored in a variable

**URL:** <https://discourse.julialang.org/t/how-to-call-a-function-with-a-keyword-argument-whose-name-is-stored-in-a-variable/113744>\
**Category:** General Usage\
**Tags:** pair, kwargs, keyword-arguments\
**Created:** [May 2, 2024, 2:22pm UTC](https://discourse.julialang.org/t/how-to-call-a-function-with-a-keyword-argument-whose-name-is-stored-in-a-variable/113744 "2024-05-02T14:22:41Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [May 2, 2024, 2:22pm UTC](https://discourse.julialang.org/t/how-to-call-a-function-with-a-keyword-argument-whose-name-is-stored-in-a-variable/113744/1 "2024-05-02T14:22:41Z")

</div>

If someone need it.. or for myself when I will forget it 😉

This snippet allows to call a function with a keyword argument whose name is stored in a variable:

```julia-auto
foo(x;extra=0) = x+extra
keyword = "extra"
foo(2,extra=1)
foo(2;(Dict(Symbol(keyword)=>1))...)

```

---

<div class="post-metadata">

**Author:** ![savq](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/savq/32/22063_2.png) [@savq](https://discourse.julialang.org/u/savq)\
**Post date:** [May 3, 2024, 5:13am UTC](https://discourse.julialang.org/t/how-to-call-a-function-with-a-keyword-argument-whose-name-is-stored-in-a-variable/113744/2 "2024-05-03T05:13:13Z")

</div>

You can skip the `NamedTuple(Dict(...`. Tuples and vectors of pairs will work:

```julia
foo(x; extra=0) = x + extra
keyword = "extra"
foo(2; extra=1)
foo(2; (Symbol(keyword)=>1,)...) # Note the comma!
foo(2; [Symbol(keyword)=>1]...)

```

I’d assume any iterable of pairs would work.

---

<div class="post-metadata">

**Author:** ![GunnarFarneback](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gunnarfarneback/32/1827_2.png) [@GunnarFarneback](https://discourse.julialang.org/u/GunnarFarneback)\
**Post date:** [May 3, 2024, 5:46am UTC](https://discourse.julialang.org/t/how-to-call-a-function-with-a-keyword-argument-whose-name-is-stored-in-a-variable/113744/3 "2024-05-03T05:46:49Z")

</div>

Making a single element collection just to splat it is redundant. It’s fine to go directly with the Pair:

```julia
foo(2; Symbol(keyword) => 1)

```

---

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [May 3, 2024, 7:22am UTC](https://discourse.julialang.org/t/how-to-call-a-function-with-a-keyword-argument-whose-name-is-stored-in-a-variable/113744/4 "2024-05-03T07:22:52Z")

</div>

Attention to a subtle particular… at calling time you need also to be specific with using the semicolon. This is not true when using the keyword argument directly, e.g. these both work:

```julia
foo(2,extra=1)
foo(2;extra=1)

```

But this doesn’t:

```julia
foo(2, Symbol(keyword) => 1) # error

```

---

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [September 12, 2025, 7:13am UTC](https://discourse.julialang.org/t/how-to-call-a-function-with-a-keyword-argument-whose-name-is-stored-in-a-variable/113744/5 "2025-09-12T07:13:16Z")

</div>

> [@sylvaticus](#):
>
> If someone need it… or for myself when I will forget it 😉

I have been provident.. I was going to post exactly the same question.. good that Discourse found it under “Your topic is similar to…” 😄 😄
