如何制作右结合中缀运算符?

2024-04-19

我有一个关联操作>>。问题是它的成本线性取决于其左操作数的大小。所以由一系列组成的表达式n的应用>> like

a >> a >> a >> a >> a >> ... >> a

它的成本是二次方n,因为默认情况下中缀运算符是左结合 https://en.wikipedia.org/wiki/Associative_property。如何使其右关联,以便该表达式的成本在以下方面保持线性n?


我找到了解决方案。斯卡拉参考 https://www.scala-lang.org/files/archive/spec/2.12/06-expressions.html#prefix-infix-and-postfix-operations在一节中说6.12.3 中缀运算:

The 关联性运算符的最后一个字符决定。运营商 以冒号“:”结尾的是右关联的。所有其他运算符都是左结合的。

因此重命名就足够了>> to >>:.

我花了一些时间才意识到a >> b脱糖成a.>>(b), a >>: b脱糖成b.>>:(a)。所以我必须定义>>: as

def >>:(x: T): T = x >> this
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何制作右结合中缀运算符? 的相关文章

随机推荐

  • 通过不加载主题和插件使 WordPress WP-API 更快

    我想更快地向 WordPress API 发出请求 我的API是在插件中实现的 使用register rest route来注册我的路线 然而 由于这是一个插件 所以所有内容都已加载 子主题和主题 并且基本上对该 API 的查询需要半秒 因
  • SQLite 查询中的 JavaScript for 循环

    我创建了一个函数 它将从我的数据库返回字符串 path function getAudio mid cb mid is an array containing the id to some multimedia files for i 0
  • 在 VSTS 托管代理上使用 PowerShellGet

    我在构建过程中使用 Visual Studio Team Services VSTS 托管的构建代理 我的构建主要依赖于 PowerShell 步骤 该步骤调用我在 git 中的脚本 在此脚本中 我想使用 PowerShellGet 管理
  • 关闭文件而不退出 VIM 应用程序?

    我用 e and w用于编辑和写入文件的命令 我不确定是否有 close 命令可以在不离开Vim的情况下关闭当前文件 I know that the q command can be used to close a file but if
  • 如何在嵌入式 Jetty 上设置 SSL?

    我已经嵌入了 jetty 7 x 基本上只是创建一个 SelectChannelConnector 来侦听端口 80 和 WebAppContext 来部署单个 WAR 目录 我现在需要添加 SSL 所有密钥库内容都已完成 我本想只添加一个
  • 如何覆盖 SyliusCoreBundle 模型用户

    我尝试在模型用户 SyliusCoreBundle Model User 中添加一个新字段 电话 避免接触SyliusCoreBundle 我创建了一个新的捆绑包 ShopBundle 它位于其他 sylius 捆绑包旁边以覆盖基本用户类
  • ASP.NET 中的 Twitter API 集成

    目前我正在使用剃刀使用MVC4 5 我尝试将 Twitter API 集成到我的应用程序中 但没有成功 您能帮助我如何将 Twitter API 集成到我的应用程序中吗 我已经创建了 twitter API 详细信息如下 OAuth 设置
  • Swift 4 JSON Codable - 返回的值有时是一个对象,其他是一个数组

    我从 API 获取的数据返回单个对象 但当有多个对象时 它会返回同一键中的数组 对于我正在使用的当前模型 结构 当数组出现时解码会失败 这些结果是随机排序的 这意味着我不知道何时会收到对象或数组 有没有办法创建一个模型 考虑到这一事实 并可
  • 数据库设计 - 是否应该避免一对一关系? [复制]

    这个问题在这里已经有答案了 可能的重复 是否存在使用数据库 1 1 关系有意义的时候 https stackoverflow com questions 517417 is there ever a time where using a d
  • SourceTree - 变基 - 合并期间的错误

    我正在尝试做一些简单的事情 例如编辑先前提交的提交消息 检查git status I have nothing to commit working directory clean 然后 我单击提交并执行 SourceTree gt Repo
  • iOS UIPageViewController 页面控制不同步

    每当我滑动页面控制器并点击UIPageControl同时在底部向相反方向滑动 当前显示的页面和pageControl中的页码会不同步 有没有人遇到过这个奇怪的问题并解决了 如果您需要任何其他信息 请告诉我 刚刚查看了文档UIPageCont
  • 如何更新 Laravel 4 中现有的 Eloquent 关系?

    我正在尝试更新 Laravel 中一对多关系的关系 不幸的是我找不到任何相关文档 谁能帮我 这是我到目前为止所拥有的 class Account extends Eloquent public function users return t
  • scanf 的四边形和参数类型

    我用
  • 平均日期数组计算

    我想得到以下日期的平均值 我考虑过将所有数据转换为秒 然后对它们进行平均 但可能有更好的方法来做到这一点 date 2016 02 23 09 36 26 2016 02 24 10 00 32 2016 02 24 11 28 22 20
  • java.lang.NoSuchFieldException:使用反射时

    public static
  • 无法从 scm 存储库获取分支信息

    我在构建 Maven 项目时遇到以下错误 有解决这个问题的想法吗 ERROR Failed to execute goal org codehaus mojo buildnumber maven plugin 1 4 create defa
  • Symfony2,奏鸣曲:折叠组

    我一直在尝试做一些相对简单的事情 但这不起作用 我希望能够折叠奏鸣曲中的组以增强用户的体验 gt with MyGroup array collapsed gt true add MyField gt end 这是根据奏鸣曲改编的文档 ht
  • python 列表理解 double for

    vec 1 2 3 4 5 6 7 8 9 print num for elem in vec for num in elem lt this gt gt gt 1 2 3 4 5 6 7 8 9 这是在骗我 我知道 elem 是列表中的列
  • 在 Python Pandas 中使用 groupby 按列连接行

    而不是例如使用 group by 计算总和 我想连接同一组中的所有行 下面的代码应该只组合 连接行 而不是 sum 如果每组有 5 行 则新数据框的列数将是 5 倍 每列 x 5 例子 这是我现在拥有的数据框 Index Pool B C
  • 如何制作右结合中缀运算符?

    我有一个关联操作 gt gt 问题是它的成本线性取决于其左操作数的大小 所以由一系列组成的表达式n的应用 gt gt like a gt gt a gt gt a gt gt a gt gt a gt gt gt gt a 它的成本是二次方