scala - 导入语句上的“错误:未找到:值 myparallel”
问题描述
我正在使用带有 Scala 插件的 JetBrains IntelliJ IDEA,我在main/scala/myparallel
目录中有一个 package.scala 文件,其中包含以下代码:
package myparallel
import java.util.concurrent._
import scala.util.DynamicVariable
object primitives {
def time[R](block: => R): R = {
val t0 = System.nanoTime()
val result = block // call-by-name
val t1 = System.nanoTime()
println("Elapsed time: " + (t1 - t0)/1000000 + "ms")
result
}
val forkJoinPool = new ForkJoinPool
abstract class TaskScheduler {
def schedule[T](body: => T): ForkJoinTask[T]
def parallel[A, B](taskA: => A, taskB: => B): (A, B) = {
val right = task {
taskB
}
val left = taskA
(left, right.join())
}
}
class DefaultTaskScheduler extends TaskScheduler {
def schedule[T](body: => T): ForkJoinTask[T] = {
val t = new RecursiveTask[T] {
def compute = body
}
forkJoinPool.execute(t)
t
}
}
val scheduler =
new DynamicVariable[TaskScheduler](new DefaultTaskScheduler)
def task[T](body: => T): ForkJoinTask[T] = {
scheduler.value.schedule(body)
}
def parallel[A, B](taskA: => A, taskB: => B): (A, B) = {
scheduler.value.parallel(taskA, taskB)
}
def parallel[A, B, C, D](taskA: => A, taskB: => B, taskC: => C, taskD: => D): (A, B, C, D) = {
val ta = task { taskA }
val tb = task { taskB }
val tc = task { taskC }
val td = taskD
(ta.join(), tb.join(), tc.join(), td)
}
}
我在各种 .sc 工作表文件中使用此代码,方法是通过import myparallel.primitives._
以下示例导入它:
import myparallel.primitives._
import scala.util.Random
val threshold = 10000
def mapArrPar[A,B](inp: Array[A], left: Int, right: Int,
f : A => B, out: Array[B]): Unit = {
if (right - left < threshold)
mapArr(inp, left, right, f, out)
else {
val mid = left + (right - left)/2
parallel(mapArrPar(inp, left, mid, f, out),
mapArrPar(inp, mid, right, f, out))
}
}
val vectIn = Array.fill(100000)(1).map(_ * scala.util.Random.nextInt)
val vectOut = new Array[Double](100000)
time(mapArrPar(vectIn, 0, vectIn.length, (x:Int) => Math.pow(x, 19), vectOut))
linter 没有给我任何错误,但是如果我尝试执行工作表,我会收到一系列错误,其中第一个会说Error:not found: value myparallel
import myparallel.primitives._
. 此外,每次使用前面提到的包中定义的函数都会出现其他错误,例如Error:(51, 6) not found: value parallel
parallel(mapArrPar(inp, left, mid, f, out),
包或导入语句有什么问题?
解决方案
推荐阅读
- c - 如何访问 if 语句中的变量
- php - Flutterwave 账单支付 API 集成
- python - 如何将音频帧附加到wav文件python
- python - python cbpro api问题追加数据
- html - 在加载器 CSS 中居中对齐旋转 SVG
- jquery - HighCharts Stacked Charts xAxis with json不工作
- android - 在android中关闭对话框时是否需要删除TextWatcher?
- reactjs - ReactJS,在创建反应应用程序时如何保持视口初始比例=1.0
- python - 在python中有效地从现有变量创建一个新变量
- javascript - 如何更新对象的某些属性?