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
]
导致编译器告诉我“不匹配的 '('”。显然,编译器不喜欢带括号的多行条件语句。为什么会这样呢?有没有什么方法可以解决呢?
这只是一个简单的例子,但在实际使用中,我将拥有任意复杂的递归表达式(因此需要在多行上拆分它),而我不想通过列表附加等方式打破表达式并进行命令式处理。
编辑: 这个可以工作:
let a = [
1;
2;
3;
if 3 > 2 then yield(
4
)else yield(
5);
6
]
但对于一个简单的三元操作符来说,它有些啰嗦了(5个关键字和4个括号!)。继续寻找更简洁的替代方案。
else
之前有一个无效的;
。 - user29439