scala隐式值是如何工作的?
一般来说,这不是一个关于scala隐式值是如何工作的?,scala,Scala,一般来说,这不是一个关于隐式的问题-我知道它是如何工作的。这是关于一个特定的构造。在斯卡拉的myBatis中有一个非常常见的模式: manager.readOnly { implicit session => { //Code block: Do some DB operations in session } } 只读的定义可在此处找到: 如何阅读:在管理器上调用只读方法,其参数是将会话作为参数的函数 我的问题是:隐式会话值从何处获取?什么背景?我不必自己定义任何会话对象
隐式的问题-我知道它是如何工作的。这是关于一个特定的构造。在斯卡拉的myBatis中有一个非常常见的模式:
manager.readOnly { implicit session => {
//Code block: Do some DB operations in session
}
}
只读的定义可在此处找到:
如何阅读:在管理器
上调用只读
方法,其参数是将会话
作为参数的函数
我的问题是:隐式会话
值从何处获取?什么背景?我不必自己定义任何会话
对象。隐式参数提供了一种允许“找到”方法参数的方法。这意味着,如果未提供参数值,编译器将根据解析规则搜索范围内定义的“隐式”值:
变量必须标记为隐式才能被视为候选变量
显式定义覆盖隐式定义
首先查看局部范围
如果对象存在,则搜索该对象
这样说:
首先,符合条件的是可以在
不带前缀且表示隐式
定义或隐式参数。第二,符合条件的也都是
隐式参数类型的伴随模块的成员
标记为隐式
似乎还有很多边缘案例,没有太多好的文档,所以我不鼓励大家疯狂使用隐式,否则你可能会大吃一惊。隐式参数提供了一种允许“找到”方法参数的方法。这意味着,如果未提供参数值,编译器将根据解析规则搜索范围内定义的“隐式”值:
变量必须标记为隐式才能被视为候选变量
显式定义覆盖隐式定义
首先查看局部范围
如果对象存在,则搜索该对象
这样说:
首先,符合条件的是可以在
不带前缀且表示隐式
定义或隐式参数。第二,符合条件的也都是
隐式参数类型的伴随模块的成员
标记为隐式
似乎也有很多边缘案例,没有太多好的文档,所以我不鼓励你对隐式应用发疯,否则你可能会大吃一惊
我的问题是:隐式会话值从何处获取?哪一个
上下文我不必自己定义任何会话对象
在本例中,隐式会话
是它开始的函数文本的正式参数声明。因此,实际值由readOnly
中的代码提供,该代码将在执行其操作时调用该函数
在这里使其隐式意味着函数体中的代码(我认为这是一个巧妙的查询)为了便于标记,想要/需要/首选隐式参数。(隐式形式参数可能总是显式传递其实际参数)
顺便说一句,内支架是不必要的,应该省略
我的问题是:隐式会话值从何处获取?哪一个
上下文我不必自己定义任何会话对象
在本例中,隐式会话
是它开始的函数文本的正式参数声明。因此,实际值由readOnly
中的代码提供,该代码将在执行其操作时调用该函数
在这里使其隐式意味着函数体中的代码(我认为这是一个巧妙的查询)为了便于标记,想要/需要/首选隐式参数。(隐式形式参数可能总是显式传递其实际参数)
顺便说一句,内支架是不必要的,应该省略