在分配类型T
数组期间,表达式的new T[]
部分是隐式的。
int[] test = {1,2,3,5};
语言规范是否说明为何在其他地方不支持此类初始化?像bellow这样的语法是否会与任何其他语言规则冲突?似乎类型推断似乎不会太困难。
public static void test(int[] a, int[] b) { ... };
...
test({1,2,3}, {4,5,6});
答案 0 :(得分:2)
JLS确实说你不能在第15节中这样做。从15.12 Method Invocation Expressions开始,我们可以看到你可以调用方法的所有有效方法。其中重要的部分是可选的ArgumentList,它将提供有关参数的有效语法的规范。
在调用表达式下方,我们可以看到ArgumentList的定义,它主要是Expression的另一个链接。
当我们遵循时,我们可以看到Expression中定义了两种类型的表达式; LambdaExpression和AssignmentExpression。据我所知,你的问题是"Class instance creation expressions"类型。事实证明,cd converted
for %%f in (*.mp4) do (
echo.>%%f.list
echo file '%%f' >> %%f.list
echo file 'intro_outro/c_outro.mp4' >> %%f.list
)
for %%f in (*.list) do (
ffmpeg -f concat -i %%f -c copy concatenated/%%f.mp4
)
这样的调用是有效的。
当我们按照第15.9节的链接时,我们可以看到您提议的内容根本不受支持。
这没有回答为什么;我意识到这一点。但是,只有做出该决定的人才能回答原因。我们知道其他语言可以证明这种狡猾是可能的。