Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Isn';“中的元素示例是否存在循环依赖性问题?”;用Scala编程;第十章?_Scala - Fatal编程技术网

Isn';“中的元素示例是否存在循环依赖性问题?”;用Scala编程;第十章?

Isn';“中的元素示例是否存在循环依赖性问题?”;用Scala编程;第十章?,scala,Scala,在第10章“Scala编程”的第198页,元素的定义定义了一个函数/方法“over”,该函数/方法返回一个新的ArrayElement。但数组扩展了元素 在尝试输入示例时,我实际上得到了我所期望的。。。关于这些定义的循环依赖性的投诉 我错过了什么 我相信您希望第196页的ArrayElement定义已经生效。我相信您希望第196页的ArrayElement定义已经生效。循环定义在这种情况下不是问题,因为返回类型不是循环的,在类型解析之后,可以在第二次过程中解析实现 例如,我注意到我把所有东西都包

在第10章“Scala编程”的第198页,元素的定义定义了一个函数/方法“over”,该函数/方法返回一个新的ArrayElement。但数组扩展了元素

在尝试输入示例时,我实际上得到了我所期望的。。。关于这些定义的循环依赖性的投诉


我错过了什么

我相信您希望第196页的
ArrayElement
定义已经生效。

我相信您希望第196页的
ArrayElement
定义已经生效。

循环定义在这种情况下不是问题,因为返回类型不是循环的,在类型解析之后,可以在第二次过程中解析实现

例如,我注意到我把所有东西都包装在一个物体里,所以RePL会同时考虑:

object Example {
  abstract class E {
    def a: Int
    def e: E = new AE(2)
  }
  class AE(val a: Int) extends E { }
}
而这正是我们所期待的:

scala> val ae = new Example.AE(0)
ae: Example.AE = Example$AE@57240e

scala> ae.a
res1: Int = 0

scala> ae.e.a
res2: Int = 2
我的猜测是,当您键入它时,您试图让REPL只接受循环定义的一部分,或者您遗漏了允许在类型中解析循环性的内容(例如,如果您键入的返回为
AbstractElement
而不是
Element
,这将令人困惑!)


无论如何,我觉得代码原样没问题。

在这种情况下,循环定义不是问题,因为返回类型不是循环的,并且可以在解析类型后的第二次过程中解析实现

例如,我注意到我把所有东西都包装在一个物体里,所以RePL会同时考虑:

object Example {
  abstract class E {
    def a: Int
    def e: E = new AE(2)
  }
  class AE(val a: Int) extends E { }
}
而这正是我们所期待的:

scala> val ae = new Example.AE(0)
ae: Example.AE = Example$AE@57240e

scala> ae.a
res1: Int = 0

scala> ae.e.a
res2: Int = 2
我的猜测是,当您键入它时,您试图让REPL只接受循环定义的一部分,或者您遗漏了允许在类型中解析循环性的内容(例如,如果您键入的返回为
AbstractElement
而不是
Element
,这将令人困惑!)


无论如何,我觉得代码原样没问题。

您可以像这样将所有内容包装到源文件中:

layout {      
... code goes here...   
}
然后在REPL中,您可以:加载[您的文件]并执行以下操作

layout.Element.elem("bla bla bla")

您可以将所有内容包装到源文件中,如下所示:

layout {      
... code goes here...   
}
然后在REPL中,您可以:加载[您的文件]并执行以下操作

layout.Element.elem("bla bla bla")

试过了;-)我将ArrayElement和元素放在同一个文件中,然后通过:load xxx.scala加载它们。问题是ArrayElement扩展了元素(它是抽象的),所以您不能定义ArrayElement,但元素在其定义中使用ArrayElement,所以您也不能先定义它。首先,我看错了密码。代码可能是错误的,也可能是各种代码片段的正确组合。我真的不知道。试过了;-)我将ArrayElement和元素放在同一个文件中,然后通过:load xxx.scala加载它们。问题是ArrayElement扩展了元素(它是抽象的),所以您不能定义ArrayElement,但元素在其定义中使用ArrayElement,所以您也不能先定义它。首先,我看错了密码。代码可能是错误的,也可能是各种代码片段的正确组合。我真的不知道。