Iterator .any?

Witam.

Mam problem z iteratorem .any?, który ma działać na słowach (z porównywaniem liczb nie mam problemów).

 %w[a, b, c].any? {|x| x == %w[c]}

Program za każdym razem zwraca w irb wartość false. Według mnie powinno być true, bo znak c znajduje się w tablicy [a,b,c].
Jak zamienię w bloku == na =, to za każdym razem program zwraca true.

EDIT.

Znalazłem błąd. Kod powinien wyglądać następująco:

 %w{a b c}.any? {|x| x == "c"}

Można również tak:

 ["a", "b", "c"].any? {|x| x == "c"}

W tych przypadkach blok zwróci wartość true.

W twoim pierwszym przykładzie x w bloku będzie zawsze stringiem.
Porównujesz go z jednoelementowa tablica, takie porównie w ruby zawsze zwroci false, bo po pierwsze nie zgadzaja sie typy zmiennych.
= jest operatorem przypisania. W ruby zawsze domyślnie zwracana jest ostatnie wykonana instrukcja (np.: x = “c” zwróci “x”), jeśli wartość nie będzie nil lub false to ruby zinterpretuje to jako true.