Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scala隐式值是如何工作的?_Scala - Fatal编程技术网

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
    中的代码提供,该代码将在执行其操作时调用该函数

    在这里使其隐式意味着函数体中的代码(我认为这是一个巧妙的查询)为了便于标记,想要/需要/首选隐式参数。(隐式形式参数可能总是显式传递其实际参数)

    顺便说一句,内支架是不必要的,应该省略