# Equals Problem

**URL:** https://discourse.julialang.org/t/equals-problem/8530
**Category:** General Usage
**Created:** [January 22, 2018, 8:19pm UTC](https://discourse.julialang.org/t/equals-problem/8530 "2018-01-22T20:19:18Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![Qiyamah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/qiyamah/32/2660_2.png) [@Qiyamah](https://discourse.julialang.org/u/Qiyamah)
#### Post date: [January 22, 2018, 8:19pm UTC](https://discourse.julialang.org/t/equals-problem/8530/1 "2018-01-22T20:19:18Z")

</div>

```nohighlight
julia> struct Field
           name::Symbol
           typ::Type
           Field(name::Symbol,typ::Symbol) = new(name,eval(typ))
       end

julia> #no need to check the type! closest
       function Base.broadcast(::typeof(==),f1::Field,f2::Field)
           isequal(f1.name,f2.name)
       end

julia> Base.hash(f::Field, h::UInt) = hash(f.name, hash(Field,h))

julia> f1 = Field(:a,:Int)
Field(:a, Int64)

julia> f2 = Field(:a,:Float64)
Field(:a, Float64)

julia> f1 == f2
false

```

I don’t understand what is going wrong, Can someone help me out?  
Thanks

---

<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: [January 22, 2018, 8:23pm UTC](https://discourse.julialang.org/t/equals-problem/8530/2 "2018-01-22T20:23:23Z")

</div>

> [@Qiyamah](#):
>
> ```julia
> function Base.broadcast(::typeof(==),f1::Field,f2::Field)
> isequal(f1.name,f2.name)
> end
> 
> ```

Why did you define this function? Define `Base.:(==)(::Field, ::Field)` instead.

---

<div class="post-metadata">

### Author: ![Qiyamah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/qiyamah/32/2660_2.png) [@Qiyamah](https://discourse.julialang.org/u/Qiyamah)
#### Post date: [January 22, 2018, 8:32pm UTC](https://discourse.julialang.org/t/equals-problem/8530/3 "2018-01-22T20:32:08Z")

</div>

```julia
WARNING: deprecated syntax "function .==(...)".
Use "function Base.broadcast(::typeof(==), ...)" instead.
ERROR: syntax: "(f1::Field,f2::Field)" is not a valid function argument name

```

Because of this warning, however i see Base.:(==) works, what is the difference between Base.== and Base.:(==)?

Thanks

---

<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: [January 22, 2018, 9:08pm UTC](https://discourse.julialang.org/t/equals-problem/8530/4 "2018-01-22T21:08:50Z")

</div>

Oh, yeah that is a bit confusing.

`.==` is elementwise equals to:

```julia
julia> [1,2,3] .== [1,2,4]
3-element BitArray{1}:
 true
 true
 false

julia> [1,2,3] == [1,2,4]
false

```
