Search code examples
rubymri

Why does ruby require parentheses here?


When I try to do

assert_equal { dry: true }, res

I get

syntax error, unexpected ':', expecting '}'

        assert_equal { dry: true }, res

but

assert_equal({ dry: true }, res)

works fine. Why is first form not sufficient for ruby to understand what I mean? Or to be more precise, what does Ruby think I'm trying to do?


Solution

  • In the first example, the curly braces are interpreted as delimiting a block. Since dry: true is not a legal expression, you get a SyntaxError.