# Best practice for adding validations to setfield! function?

**URL:** <https://discourse.julialang.org/t/best-practice-for-adding-validations-to-setfield-function/13604>\
**Category:** General Usage\
**Tags:** question\
**Created:** [August 17, 2018, 6:16am UTC](https://discourse.julialang.org/t/best-practice-for-adding-validations-to-setfield-function/13604 "2018-08-17T06:16:08Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![djsegal](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/djsegal/32/13752_2.png) [@djsegal](https://discourse.julialang.org/u/djsegal)\
**Post date:** [August 17, 2018, 6:16am UTC](https://discourse.julialang.org/t/best-practice-for-adding-validations-to-setfield-function/13604/1 "2018-08-17T06:16:08Z")

</div>

I run into this problem with mutable structs where I’d like to validate the input.

Is there a best practices way to do this?

* * *

current psuedocode:

```julia
import Base: setfield!

mutable struct Foo
  fizz::Number
  is_good::Bool
end

function validate!(cur_obj::Foo)
  cur_obj.is_good = ( cur_fizz < 1 )
end

function setfield!(cur_obj::Foo, cur_field::Symbol, cur_value::Any)
  cur_super = Base.setfield!(cur_obj, cur_field, cur_value)
  validate!(cur_obj)
  cur_super
end
```

---

<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:** [August 17, 2018, 6:58am UTC](https://discourse.julialang.org/t/best-practice-for-adding-validations-to-setfield-function/13604/2 "2018-08-17T06:58:55Z")

</div>

That definition calls itself the first thing it does so will never terminate.

Use `setproperty!` instead.

---

<div class="post-metadata">

**Author:** ![djsegal](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/djsegal/32/13752_2.png) [@djsegal](https://discourse.julialang.org/u/djsegal)\
**Post date:** [August 17, 2018, 7:32am UTC](https://discourse.julialang.org/t/best-practice-for-adding-validations-to-setfield-function/13604/3 "2018-08-17T07:32:25Z")

</div>

Very cool. Definitely a reason to upgrade to v0.7
