java - 如何传递一个接受浮点数并将浮点数返回给另一个函数的函数?
问题描述
我正在尝试在 Java 中的一个类上编写一个“映射”函数。如何传递一个带浮点数的函数并将浮点数返回给另一个函数?像这样的东西:
void map( MapFn fn )
{
for ( int i = 0 ; i < this.rows; ++i )
{
for ( int j = 0 ; j < this.cols; ++j )
{
this.inner[i][j] = fn(this.inner[i][j])
}
}
}
解决方案
正如@boly38 在评论中所建议的那样,这个java.util.function
包是你的朋友(或者一般来说只是功能接口/lambdas)。例如,它提供DoubleUnaryOperator
类。接受 this 的实例作为您的方法参数并使用该applyAsDouble()
方法将(有效地)执行您想要的操作。
但是,没有专门提供float
。如果您需要一个,您可以随时定义自己的:
@FunctionalInterface
public interface FloatUnaryOperator {
float applyAsFloat(float in);
}
所以让你的方法是:
public void doThing(final DoubleUnaryOperator mapper) {
for (final double d : someArray) {
System.out.println(mapper.applyAsDouble(d));
}
}
这些实例可以通过 lambdas(或任何其他方式)创建,例如f -> f * 2.0f;
(这将使任何给定的 加倍float
)。
推荐阅读
- api - .net 核心将 null 转换为空字符串以响应 ConfigureServices
- javascript - 如何在 Adobe Acrobat PDF 中突出显示/复制多个文本元素
- python - 逻辑回归模型(二进制)交叉表错误 = 传递值的形状问题
- python - AttributeError:“函数”对象在尝试从函数访问变量时没有属性错误
- apache-kafka - Flink 和非键控窗口状态
- java - 在映射超类中处理 Hibernate 持久性
- javascript - Eclipse IDE v2020-12 (4.18.0) 坚持我的 javascript 文件之一是 HTML 文件,并将每次使用 && 标记为无效字符
- python - Visual Studio Code 中的 Python Quandl 输出
- python - 使用正则表达式从 url 中提取日期
- c# - MVVM:如何从我在检查项目的列表视图中手动输入的文本框中检索值?