如何定义一个将函数文字(带有隐式参数)作为参数的函数?

2023-12-09

我希望能够在这些行上做一些事情(不会编译):

def logScope(logger:Logger)(operation: (implicit l:Logger) => Unit) {/* code */ operation(logger) /* code */} 
def operationOne(implicit logger:Logger) {/**/}
def operationTwo(implicit logger:Logger) {/**/}

然后像这样使用它:

logScope(new ConsoleLogger){logger =>
    operationOne
    operationTwo
    }

但我最接近的可行解决方案是:

def logScope(logger:Logger)(operation: Logger => Unit) {/* code */ operation(logger) /* code */} 
def operationOne(implicit logger:Logger) {/**/}
def operationTwo(implicit logger:Logger) {/**/}

/* other code */

logScope(new ConsoleLogger){logger =>
    implicit val l = logger
    operationOne
    operationTwo
    }

我认为该语言目前不允许这样的构造,但是仍然有任何建议或解决方法可以实现类似的结果吗?


小更新:我已经创建了一个要点使用上述代码的稍微扩展版本,并尝试模拟这种文字。到目前为止,CheatEx 的版本是最好的。


在你的第二个例子中尝试这个:

logScope(Logger()) { implicit logger =>
  operationOne
}

它应该工作正常。这里的逻辑是“隐式”是具有特定值的属性inside闭包,不是闭包接口的一部分。

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

如何定义一个将函数文字(带有隐式参数)作为参数的函数? 的相关文章

  • 将额外的参数传递给多态函数?

    我有一个多态函数 可以将列表转换为集合 import shapeless PolyDefns gt import shapeless val lists List 1 2 List A B List 1 1 2 2 HNil object
  • Scala 'null' 是否算作另一种类型的实例?

    我有这个代码 class MyLinkedList T h T tail MyLinkedList T def prepend v T MyLinkedList T new MyLinkedList v this 我想知道我如何可以将第二个
  • 将所有构造函数参数作为实例属性添加到 PyCharm 中的类中

    我正在使用 PyCharm 我开始定义一个类 class A def init self a b c 我希望它看起来像这样 class A def init self a b c self a a self b b self c c 使用
  • 在 Spark 中将流式 XML 转换为 JSON

    我是 Spark 新手 正在开发一个简单的应用程序 将从 Kafka 接收的 XML 流转换为 JSON 格式 Using 火花2 4 5 斯卡拉 2 11 12 在我的用例中 kafka 流采用 xml 格式 以下是我尝试过的代码 val
  • Play框架:读取包含空值的Json

    我正在尝试在 Play Scala 程序中读取 Json 数据 Json 的某些字段可能包含空值 因此我定义 Reads 对象的方式如下 implicit val readObj Reads ApplyRequest JsPath a re
  • Scala 中缺少多重集吗?

    我正在尝试 Scala 中的 Facebook Hacker Cup 2013 资格赛问题 对于第三个问题 我觉得需要一个有序的 Multiset 但在 scala 的 2 10 集合中找不到一个 scala 的集合中是否缺少此数据结构 会
  • Scala REPL / SBT Console 是否有配置文件?

    我一直在尝试找到某种点文件来放入 Scala REPL 设置和自定义函数 我特别有兴趣传递它的标志 例如 Dscala color 启用语法突出显示 以及覆盖设置 如结果字符串截断 scala gt power scala gt vals
  • Scala 中的行聚合

    我正在寻找一种方法在 Scala 的数据框中获取一个新列来计算min max中的值col1 col2 col10对于每一行 我知道我可以使用 UDF 来做到这一点 但也许有一种更简单的方法 Thanks Porting 这个Python答案
  • Scala 功能设计模式目录

    一周以来我一直在阅读 Scala 编程 作者一步一步地介绍了该语言的元素 但我仍然很困惑何时使用演员 闭包 柯里化等功能性的东西 我正在寻找功能结构的典型用例或最佳实践的目录 我并不是说在 Scala 中重新实现像 GoF 这样的众所周知的
  • java中将函数作为参数传递

    我正在熟悉 Android 框架和 Java 并希望创建一个通用的 NetworkHelper 类 该类将处理大部分网络代码 使我能够从中调用网页 我按照developer android com 上的这篇文章创建了我的网络类 http d
  • 理解 scala 的 _ 与 Any/Nothing

    如果一个类具有协变类型参数 例如Iterable A http www scala lang org archives downloads distrib files nightly docs 2 10 1 library index ht
  • 错误:无法在 scala 中找到或加载主类

    安装 eclipse scala 插件和 eclipse maven scala 插件后 我是 scala 新手 所以我尝试确保在测试 scala hello world 项目后环境正常工作 它按预期工作 但我在尝试执行我从公司存储库中签出
  • scala.math.BigDecimal :1.2 和 1.20 相等

    将 Double 或 String 转换为 scala math BigDecimal 时如何保持精度和尾随零 用例 在 JSON 消息中 属性的类型为 String 值为 1 20 但是在 Scala 中读取这个属性并将其转换为 BigD
  • Scalaz 拆箱标记类型不会自动拆箱

    Reading http eed3si9n com learning scalaz Tagged type html http eed3si9n com learning scalaz Tagged type html并尝试示例代码 imp
  • WSClient - 打开的文件太多

    我正在 CentOS 6 上使用 Play Framework 2 4 我的应用程序抛出此异常 java net SocketException Too many open files 我在 Stack Overflow 上搜索了很多主题并
  • 需要澄清令人困惑的 Http4s 消息类型 `Response[F]` / `Request[F]`

    我很难理解为什么Request and Response参数化为F 类似的东西是猫效应数据类型资源 从文档中 https typelevel org cats effect docs std resource https typelevel
  • Angular 2 - 在(点击)事件中使用管道

    我的问题可能很简单 但只是找不到在事件 例如 单击 中使用管道的方法 像这样的事情
  • 如何向 URL 添加查询参数?

    在 Tritium Moovweb SDK 中向 URL 添加查询参数的最佳实践是什么 寻找一些在您不知道 URL 是否包含 的情况下有效的方法 和其他查询参数已经 下面是 Tritium 的一个简短片段 应该可以帮助您完成 Moovweb
  • SSRS将参数传递给子报表

    我有 2 个表 它们都有 countyID 列 我有一个主报告 它根据如下查询显示报告 SELECT countyID name address state FROM TableA 我在 TableA 上设置了一个参数 您可以在其中选择名称
  • 如何在scala中生成n-gram?

    我正在尝试在 scala 中编写基于 n gram 的分离新闻算法 如何为大文件生成 n gram 例如 对于包含 蜜蜂是蜜蜂中的蜜蜂 的文件 首先它必须选择一个随机的 n 元语法 例如 蜜蜂 然后它必须寻找以 n 1 个单词开头的 n 元

随机推荐

  • mybatis中动态使用HashMap进行参数映射

    好的 这有点重新发布这个问题使用 ibatis 将 HashMap 值插入表 但我正在寻找一种不同的方式 答案对我不起作用 DB1GetStudentDataMapper xml 这查询一个数据库
  • 在 Laravel 4 的 Eloquent 中使用枢轴模型数据作为与另一个模型的关系

    我有一个用于多对多关系的数据透视表 其中包括另一个模型的第三个索引参数 我希望能够使用 Eloquent 来访问这个模型 在我的应用程序中 我有一个User谁可以拥有很多Subjects还有很多Semesters 当用户拥有Subject
  • 当选择另一个单选按钮时,如何将其更改为“选中”?

    我希望你们能帮我解决这个问题 我怎样才能有一个单选按钮id A 将其属性更改为 已检查 当单选按钮id B 被选中 单选按钮 A 和 B 位于不同的组中 Thanks
  • 如何编写反汇编程序? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我有兴趣编写一个 x86
  • Yii CMultiFileUpload 选择多个文件

    得到了答案 将多个文件上传到数据库进行注册 已经尝试了很多方法来使用 CMultiFileUpload 小部件使多个文件上传可行 我已经检查并关注了以下链接 http www yiiframework com forum index php
  • safeUnbox() 无法反转

    我试图消除 Android 应用程序的所有警告 其中之一是 viewModel value 是一个装箱字段 但需要取消装箱才能执行 android checked 这可能会导致 NPE 因此数据绑定将安全地拆箱它 您可以更改表达式并使用 s
  • 太阳能标签云

    我似乎陷入了 Solr 分面支持的标签云的逻辑背后 首先 我使用 OpenNLP 解析我的文档并从中获取相关单词 因此每个文档都被分成 n 个单词 我的 Solr 响应基本上是这样的
  • 是否为容器启用?

    有没有办法禁用容器内的所有控件 例如网格 谢谢你 UPD 虽然Silverlight的Grid有IsEnabled属性 但Windows Phone 7 Grid肯定没有IsEnabled属性 对于 Silverlight 我在网格周围添加
  • 如何创建位图形式的Drawable对象

    我正在为 Android 开发自定义视图 为此 我希望让用户能够选择和使用图像 就像使用时一样ImageView In attr xml我添加了以下代码
  • 拖动源容器时,jsPlumb 源端点不会移动

    Using jsPlumb 其中在可拖动内部的细分之间创建键absolute定位的容器称为 projects 这些都出现在一个大型通用容器中 container 代码中设置为默认容器jsPlumb Defaults Container co
  • PY2EXE 编译 Python 代码运行速度更快吗?

    我真的很喜欢 PY2EXE 模块 它确实帮助我与其他同事共享脚本 这些脚本对他们来说非常易于使用 我的问题是 当 PY2EXE 模块将代码编译为可执行文件时 生成的可执行文件处理速度是否更快 感谢您的回复 py2exe 只是将 Python
  • 测试开关中的多种情况,例如 OR (||)

    你会如何使用switch case当你需要测试时a or b在同样的情况下 switch pageid case listing page case home page alert hello break case details page
  • 将具有数据绑定的“动态”元素添加到我的聚合物元素中

    几天来 我尝试为聚合物提供一些 动态 元素 不幸的是没有成功 我的目标是在运行时添加一个元素 并通过聚合物数据绑定 以 自然 聚合物方式 用内容填充它 没有另一个建议的解决方法堆栈溢出答案 请看一下这个小提琴中的代码 https jsfid
  • 在单个函数中设置状态两次 - ReactJS

    我有一个设置状态两次的函数 第二次setState必须在第一次之后 500 毫秒后发生setState已经发生 动画目的 代码如下 const showAnimation gt this setState hidden false setT
  • 连接 ODP.Net 时出现 ORA-01005 错误

    我尝试使用以下代码访问 Oracle 数据库 版本 10 2 0 4 0 但在调用其 open 方法时 连接会引发 ORA 01005 给出空密码 登录被拒绝 异常 var connBuilder new OracleConnectionS
  • ChromeDriver driver = new ChromeDriver(); 之间有什么区别和 WebDriver 驱动程序 = new ChromeDriver();

    有什么区别 ChromeDriver driver new ChromeDriver and WebDriver driver new ChromeDriver 如果我在 Selenium Java 中使用这些代码 我会得到相同的输出吗 我
  • 错误:[Header] 不是 组件

    尽管我努力修复它们 但我仍然遇到上述错误 终端声称应用程序编译没有问题 但浏览器上没有显示任何内容 我在查看控制台时发现了错误 以下是错误所指的 Header 组件的 index js 文件 import React from react
  • 使用 pywin32 库中的 win32evtlog 写入 Windows 事件日志

    我有一个简单的 python 脚本 将在 Windows 服务器上运行 我想将整个脚本中的特定事件记录到 Windows 事件日志中 有谁有一个简单而精确的写入 Windows 事件日志的示例 以便我可以从事件查看器查看该事件 我已阅读 p
  • SQL-收缩数据库日志文件

    我正在尝试缩小我的数据库日志文件 我尝试过运行 USE databasename BACKUP log databasename WITH truncate only DBCC shrinkfile databasename log 1 我
  • 如何定义一个将函数文字(带有隐式参数)作为参数的函数?

    我希望能够在这些行上做一些事情 不会编译 def logScope logger Logger operation implicit l Logger gt Unit code operation logger code def opera