问题标签 [diamond-operator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
1817 浏览

perl - Perl 的菱形运算符:可以在 bash 中完成吗?

有没有一种惯用的方法可以在 bash 中模拟 Perl 的菱形运算符?与钻石算子,

读取标准输入的输入和

读取 file1 和 file2 的输入。

另一个限制是我想将 script.sh 中的标准输入用于我自己脚本的输入之外的其他内容。下面的代码对上面的 file1 file2 ... case 执行了我想要的操作,但不适用于 stdin 上提供的数据。

我更喜欢 Bash 解决方案,但任何 Unix shell 都可以。

编辑:为澄清起见,这里是 script.sh 的内容:

我希望它以菱形运算符在 Perl 中的工作方式工作,但它现在只处理文件名作为参数。

编辑2:我不能做任何事情

因为命令的标准输入不是用户的数据。命令的标准输入是我在 here-doc 中的数据。我希望用户数据进入我的脚本的标准输入,但它不能是我脚本中命令调用的标准输入。

0 投票
3 回答
735 浏览

perl - 我可以使用 <> 运算符跳过整个文件吗?

下面的 Perl 代码有一个明显的低效率;

代码将逐步遍历我们不想要的文件的每一行。

在运行此特定脚本的文件大小上,这不太可能产生明显的差异,但为了学习;我怎样才能将整个文件 <> 工作并移至下一个文件?

这样做的目的是因为这个脚本运行的服务器存储旧版本的应用程序,文件名中带有版本号,我只对当前版本感兴趣。

0 投票
3 回答
657 浏览

perl - Perl 菱形运算符是否迭代非魔术数组(不是@ARGV)?

我认为以下内容不应该起作用,但确实如此:

据我所知,Perl 的<>运算符应该在文件句柄、glob 等上工作,除了文字<>(而不是<FILEHANDLE>),它神奇地迭代了@ARGV.

有谁知道它是否应该像我的测试一样工作?

0 投票
2 回答
2440 浏览

perl - 为什么在 Perl 的列表上下文中使用菱形运算符时出现关闭的文件句柄错误?

这段代码:

产生此错误:

我不知道为什么。

编辑:原始帖子在open声明中使用“,”而不是“<”。

0 投票
1 回答
2269 浏览

java - JDK7:钻石推理语法混乱

尝试在JDK7中编译以下代码:

为什么菱形语法的第二种用法不起作用?

第一次使用的最大区别是什么?

0 投票
7 回答
161315 浏览

java - Java 中菱形运算符 (<>) 的意义何在?

java 7 中的菱形运算符允许如下代码:

但是在 Java 5/6 中,我可以简单地编写:

我对类型擦除的理解是这些完全相同。(无论如何,泛型在运行时都会被删除)。

为什么要为钻石烦恼?它允许哪些新功能/类型安全?如果它没有产生任何新功能,为什么他们会提到它作为一个特性?我对这个概念的理解有缺陷吗?

0 投票
4 回答
1375 浏览

perl - 为什么我不能在 Perl 中将菱形运算符与数组一起使用?

代码

我不确定为什么Way1不能按预期工作Way2。这两种方法不一样吗?这里发生了什么?

0 投票
4 回答
897 浏览

perl - 如何在标量上下文中使用菱形运算符作为函数调用参数?

如何直接将值从菱形运算符传递给函数(子)?

我试过了:

但是当我为每个函数参数输入数字时,我需要输入 EOF。它表现为@array=<>. 我希望它表现得像$var=<>. 所以输入应该是这样的:

0 投票
1 回答
947 浏览

perl - 如何伪造 perl 的钻石运算符的输入?

这个问题的答案描述了如何伪造输入到<STDIN>. 我的目标类似于那个问题:我的单元测试需要伪造输入到<>.

当我将相同的技术应用于伪造输入时<>,它不起作用。的介绍性解释<>使我相信,当命令行上没有给出文件时,它是从 STDIN 读取的,但情况似乎并非如此。

我正在尝试制作的样本:

fake2工作,fake1不。一个示例会话(“qwerty”是我输入的):

我的问题:

  1. 我怎样才能伪造输入<>
  2. 命令行上没有给出文件<>和没有给出文件有什么区别?<STDIN>(即为什么链接问题中的技术适用于<STDIN>但不适用于<>?)

谢谢。

0 投票
1 回答
518 浏览

java - 为什么在引入泛型时没有实现菱形运算符?

在 Java 7 中,他们最终实现了diamond operator在使用泛型时可以省略初始化的重复。

例如List<String> list = new ArrayList<>();

这看起来很方便,因为它避免了编写“无用”的代码。它似乎非常有用,我很好奇为什么在引入泛型时没有实现它。