scala - scala:使用函数定义
问题描述
在下面的代码中,第一个函数编译. 第二个不编译。
type FTDoubleDouble_Double = (Double, Double) => Double
val _dividedBy: FTDoubleDouble_Double =
{
_ / _.toDouble
}
val _dividedByThenLog: FTDoubleDouble_Double =
{
val result1 = _ / _.toDouble
scala.math.log(result1)
}
编译错误是
cannot resolve symbol /
我确信这是基本的,但我有点困惑。
解决方案
在第一种情况下,类型归属有助于编译器确定下划线应该代表什么:2 个Double
值。(这使得.toDouble
演员阵容变得多余且毫无意义。)
第二种情况无法编译,因为没有足够的提示来帮助编译器。
你可以解决这个...
val result1 :FTDoubleDouble_Double = _ / _
...但是你还有另一个问题。
scala.math.log(result1) //error
math.log()
将 aDouble
作为传入参数,而您没有。
也许这就是你想要的:
val _dividedByThenLog: FTDoubleDouble_Double =
(d1 :Double, d2 :Double) => scala.math.log(d1 / d2)
推荐阅读
- ecmascript-6 - 从存储多个函数的导出常量中显式导入一个函数
- javascript - 在 confirm() 方法中单击“取消”与单击“确定”具有相同的结果
- image - Flutter 使用 InteractiveViewer 裁剪图像
- java - 如何在 android 中实现 Paypal Native Checkout SDK?
- java - 即使在编码后写入标准输入时,Python 'A bytes like object is required'
- powershell - 如何提高迭代循环性能
- java - 自动化多个链接并在 Selenium 中验证正确重定向和损坏页面的最佳方法,无需上传 Excel
- apache - .htaccess 重写规则行为错误
- react-native - React Native 中的 Appium setTimeout 端到端测试
- mysql - 在mysql中使用窗口函数创建重复排名