let a = [
1;
2;
3;
if 3 > 2 then
4;
else
5;
6
]
哪个失败了“这个构造被剥夺了...... ......请保留这个表达式以表明它是列表中的一个元素......”,我这样做,
let a = [
1;
2;
3;
(if 3 > 2 then
4
else
5);
6
]
导致编译器告诉我“不匹配”('“。显然编译器不喜欢带有paranthesized的多行条件。为什么会这样?并且它有什么办法吗?
这是一个微不足道的案例,但在实际使用中我会有任意复杂的递归表达式(因此需要将它分割成多行),我不想破坏表达式并通过list-append进行不完美的处理什么不是。
编辑: 这有效:
let a = [
1;
2;
3;
if 3 > 2 then yield(
4
)else yield(
5);
6
]
但是比我想要的更加冗长(5个关键字和4个括号用于简单的三元运算!)。寻找更清洁的东西继续
答案 0 :(得分:7)
添加else
if
缩进(
左侧。
let a = [
1;
2;
3;
(if 3 > 2 then
4
else //same column as matching if
5);
6
]
答案 1 :(得分:2)
不需要分号时的多行。
let a = [
1
2
3
(if 3 > 2 then 4 else 5)
6
]