相关疑难解决方法(0)

在Scala中用于存储内存中可变数据表的类型是什么?

每次调用一个函数时,如果给定的一组参数值的结果尚未被记忆,我想将结果放入内存表中.一列用于存储结果,另一列用于存储参数值.

我该如何最好地实现这一点?争论的种类繁多,包括一些枚举.

在C#中,我通常使用DataTable.Scala中有同等的东西吗?

scala memoization data-structures scala-collections

20
推荐指数
2
解决办法
9113
查看次数

scala:memoize函数,无论函数有多少参数?

我想在scala中编写一个memoize函数,无论函数对象是什么,它都可以应用于任何函数对象.我希望以一种允许我使用memoize的单个实现的方式这样做.我对语法很灵活,但理想情况下,memoize出现在非常接近函数声明的地方,而不是函数之后.我还想避免首先声明原始函数,然后再为memoized版本声明第二个声明.

所以一些理想的语法可能是这样的:

def slowFunction(<some args left intentionally vague>) = memoize {
  // the original implementation of slow function
}
Run Code Online (Sandbox Code Playgroud)

甚至这是可以接受的:

def slowFUnction = memoize { <some args left intentionally vague> => {
  // the original implementation of slow function
}}
Run Code Online (Sandbox Code Playgroud)

我已经看到了这样做的方法,其中必须为每个arity函数重新定义memoize,但我想避免这种方法.原因是我需要实现几十个类似于memoize的函数(即其他装饰器),要求每个arity函数都要复制每个函数太多了.

一种做memoize的方法确实需要你重复memoize声明(所以它没有用)是什么类型用于在Scala中存储内存中的可变数据表?.

scala

17
推荐指数
1
解决办法
3680
查看次数

当命令式的风格更合适?

来自Scala编程(第二版),第98页的底部:

对Scala程序员的平衡态度

首选vals,不可变对象和没有副作用的方法.首先到达他们.当您有特定的需求和理由时,请使用变量,可变对象和带副作用的方法.

在前几页解释了为什么更喜欢val,不可变对象和没有副作用的方法,所以这句话很有意义.

但第二句话:"当你有特殊的需要和理由时,使用变量,可变对象和副作用的方法." 没有这么好解释.

所以我的问题是:

什么是使用变量,可变对象和具有副作用的方法的理由或特定需要?


Ps:如果有人可以为每个人提供一些例子(除了解释),那将是很棒的.

functional-programming scala imperative-programming

15
推荐指数
3
解决办法
1299
查看次数