# Keyword function arguments in julia

**URL:** <https://discourse.julialang.org/t/keyword-function-arguments-in-julia/23011>\
**Category:** General Usage\
**Created:** [April 10, 2019, 7:08pm UTC](https://discourse.julialang.org/t/keyword-function-arguments-in-julia/23011 "2019-04-10T19:08:33Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![bsnyh](https://avatars.discourse-cdn.com/v4/letter/b/ce7236/32.png) [@bsnyh](https://discourse.julialang.org/u/bsnyh)\
**Post date:** [April 10, 2019, 7:08pm UTC](https://discourse.julialang.org/t/keyword-function-arguments-in-julia/23011/1 "2019-04-10T19:08:33Z")

</div>

```julia
function randLocation(area::Area; rng::AbstractRNG = GLOBAL_RNG)
    r=rand(rng,2)    
    location = Location()
    location.x = area.xMin + area.xRange * r[1]
    location.y = area.yMin + area.yRange * r[2]
    return location
end

# return a deleted area based on the given deleting fraction
function deletedArea(area::Area; deletFraction::Float = 0.0)
    
    areaDeleted = deepcopy(area)
    # do something here, details omitted
    return areaDeleted
end

function randLocationDeletedArea(area::Area; deletFraction::Float = 0.0, rng::AbstractRNG = GLOBAL_RNG)
	myArea = deletedArea(area;deletFraction)
	print("type of myArea:", typeof(myArea))
	return randLocation(myArea, rng)
end

```

I got an error as the following,  
ERROR: LoadError: LoadError: syntax: invalid keyword argument syntax “deletFraction”.  
Why is it?

---

<div class="post-metadata">

**Author:** ![yurivish](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yurivish/32/307_2.png) [@yurivish](https://discourse.julialang.org/u/yurivish)\
**Post date:** [April 10, 2019, 7:13pm UTC](https://discourse.julialang.org/t/keyword-function-arguments-in-julia/23011/2 "2019-04-10T19:13:46Z")

</div>

```julia
    myArea = deletedArea(area;deletFraction)

```

You need to specify a value for the keyword argument as `f(x, deletFraction=y)`:

```julia
    myArea = deletedArea(area;deletFraction=deletFraction)

```

The same applies to your `randLocation` call, where you’ll want to say `rng=rng`.

Note also that `Float` is not a defined type in Julia Base; you may have wanted to say `Float64`.

---

<div class="post-metadata">

**Author:** ![bsnyh](https://avatars.discourse-cdn.com/v4/letter/b/ce7236/32.png) [@bsnyh](https://discourse.julialang.org/u/bsnyh)\
**Post date:** [April 11, 2019, 6:06am UTC](https://discourse.julialang.org/t/keyword-function-arguments-in-julia/23011/3 "2019-04-11T06:06:10Z")

</div>

Thank you for your kind reply. I thought for keyword arguments, without specifying a value, it will use the default provided value, right? Like in this case, if I did not specify `deletFraction` in the function call `deletedArea`, then it will be the default provided value 0?

---

<div class="post-metadata">

**Author:** ![pkofod](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pkofod/32/2179_2.png) [@pkofod](https://discourse.julialang.org/u/pkofod)\
**Post date:** [April 11, 2019, 6:40am UTC](https://discourse.julialang.org/t/keyword-function-arguments-in-julia/23011/4 "2019-04-11T06:40:23Z")

</div>

No, to get the default value, you simply don’t mention it at all 🙂

```julia
function f(; the_keyword="the default value", another_keyword="not what I want")
    println(the_keyword)
    println(another_keyword)
end
f(; another_keyword="what I want")

```
