Dart 中 ~/ 操作符的名字怎么读

Posted

技术标签:

【中文标题】Dart 中 ~/ 操作符的名字怎么读【英文标题】:How do you read the name of the ~/ operator in Dart 【发布时间】:2020-06-29 09:57:06 【问题描述】:

Dart 有一个整数除法运算符,如下所示:~/

final x = 22 ~/ 7;    // 3

文档显示它here,但他们没有说它叫什么。我是否使用正确的名称将其称为“整数除法运算符”?我见过其他人把它写成~/ 运算符(here 和here),但我不知道如何大声读出来。还有22 ~/ 7怎么说?

【问题讨论】:

【参考方案1】:

您将其用作整数除法 似乎是正确的方式,因为它清楚地传达了含义。 22~/7 也可以说是 22 除以 7 的整数除法

【讨论】:

【参考方案2】:

操作员的名字~/。它是任何类都可以实现的通用运算符。如果你需要发音,你可以称它为“波浪线运算符”。

~/num/int/double进行的运算一般称为“整数除法”或“截断除法”。

其他类也可以实现~/ 运算符,它在那里的名称取决于它的作用。如果有的话。 (BigInt 也进行整数除法,我不知道常用的~/ 的任何其他实现。

有许多多符号运算符:~/>><<[][]=。人们通常以最常见的用法命名它们:移位运算符、索引/索引集运算符,因此默认使用关于~/ 的“整数除法运算符”不会不一致,但它可能会产生误导。 (比如说,如果有人受到 C++ 的启发,将 streamController << x 等同于 streamController.add(x),那么将其读作“streamController left-shift x` 可能会令人困惑。)

【讨论】:

所以如果你正在为视障人士制作一个文本到语音引擎,当它到达~/ 时应该说什么? (例如,假设它正在阅读您的答案。) 我可能会选择“波浪线运算符”。 + 运算符具有作为单个现有数学运算符的优势,因此即使不用于加法,它也被命名为“加号”。 ~/ 不是单个运算符,因此读取它是“波浪线”。它没有正式的现有名称,因为它不常用。也就是说,人们确实会调用 >><< 移位运算符,即使它们不一定用于移位,所以你可以说“整数除法运算符”,可能不会被误解。【参考方案3】:

截断除法运算符

~/在数字的documentation中被官方称为截除除法运算符,这是我浏览num源代码发现的:

  /**
   * Truncating division operator.
   *
   * If either operand is a [double] then the result of the truncating division
   * `a ~/ b` is equivalent to `(a / b).truncate().toInt()`.
   *
   * If both operands are [int]s then `a ~/ b` performs the truncating
   * integer division.
   */
  int operator ~/(num other);

注意事项

脱离@dev-aentgs 的回答,我会将22 ~/ 7 解读为“22 除以7 的截断除法”或“22 除以7 然后截断”。 我认为@Irn 的观点是“波浪斜线运算符”可以用于不同的用途,但由于截断或整数除法是 Dart 文档中唯一列出的用途(如果我错了,请纠正我),我'我将把它称为截断除法运算符,直到我有理由不这样做。

【讨论】:

以上是关于Dart 中 ~/ 操作符的名字怎么读的主要内容,如果未能解决你的问题,请参考以下文章

掌握 Dart 集合操作符函数使用

Dart语法篇之集合操作符函数与源码分析

dart系列之:浏览器中的舞者,用dart发送HTTP请求

操作文件

#yyds干货盘点#dart系列之:浏览器中的舞者,用dart发送HTTP请求

Python文件操作