5 Tidyeval

5.1 Spacing

Put a space after the bang operators (!! and !!!) but not before them. Do not confuse !! and !!! with!.

# Good
call(!! xyz)

# Bad
call( !! xyz)
call(! !xyz)

5.2 Operator precedence

Since all arithmetic and comparison operators bind more tightly than bang operators, one should be explicit about operator precedence. Enclose the expression to unquote in parenthesis if arithmetic or comparison operators are involved.

# Bad
quo(1 + !! 1 + 2 + 3)

# Good
quo(1 + (!! 1 + 2 + 3))