Похоже, это не имеет никакого отношения к блоку if как таковому.Это просто синтаксическая ошибка.
По сути, julia запрещает синтаксис myfun (args)
при вызове функции (т. Е. Между именем функции и скобками не должно быть пробелов).
Поскольку выводфункции, например, в этом случае foo()
, может быть другой функцией, то же правило должно применяться к возвращаемым аргументам.Если вы поместите свою foo()
функцию в бесконечные скобки, это ничего не решит, поскольку вывод этого выражения по-прежнему предлагается оценивать с использованием неверного синтаксиса.
Например, обратите внимание, что:
julia> foo()()
ERROR: MethodError: objects of type Bool are not callable
Stacktrace:
[1] top-level scope at none:0
, тогда как
julia> foo() ()
ERROR: syntax: space before "(" not allowed in "foo() ("
Кроме того, как я уже упоминал в своем комментарии выше, независимо от вышесказанного, я лично считаю такие краткие блоки if
очень плохим стилем, а также плохой идеей, посколькуты сам только что разобрался.Если вы не хотите разбивать на строки, все равно хорошая идея, и гораздо более удобочитаемая, использовать точку с запятой в конце соответствующих операторов, чтобы показать четкое разделение (как для себя, читающего код, так и для интерпретатора).).
т.е.
if true; true, false; else; false, true; end
if foo(); true, false; else; false, true; end