小编JRo*_*erC的帖子

从其他lambda组成lambda时分支

我正在尝试使用lambdas来获得乐趣.我创建了一个允许lambda组成的仿函数.但是,组合方式只允许线性变换,并且不允许分支.

我的想法是,我知道将来会有一个有效的不可变状态数据结构.我想组成一个从状态中提取值的变换; 并将执行一系列步骤,这些步骤可能需要或可能不需要状态,以执行转换.

为此,我创建了两个类.功能接口的工作方式类似java.util.function.Function,但在andThen方法中采用BiFunction ,允许将state参数从lambda传递给lambda.

import java.util.Objects;
import java.util.function.BiFunction;

@FunctionalInterface
public interface Procedure<S, T> {

    T procede(S stateStructure);

    default <R> Procedure<S, R> andThen(BiFunction<S, T, R> after) {
        Objects.requireNonNull(after);
        return (param) -> after.apply(param, procede(param));
    }
}
Run Code Online (Sandbox Code Playgroud)

仿函数相当简单,有两个映射函数(一个利用状态,一个不利用),两个终止方法最终确定转换(同样,有和没有状态).

import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import java.util.function.Consumer;
import java.util.function.Function;

public class ProcedureContainer<S, T> {

    protected final Procedure<S, T> procedure;

    protected ProcedureContainer(final Procedure<S, T> procedure) {
        this.procedure = procedure;
    }

    public static <S, R> ProcedureContainer<S, R> initializeContainer(
            final Function<S, R> initialDataRetriever) { …
Run Code Online (Sandbox Code Playgroud)

java lambda java-8

6
推荐指数
1
解决办法
182
查看次数

懒惰但坚持执行Java 8 Lambda评估

我目前正在用Java创建自己的持久性数组,该数组使用二进制搜索树存储值的集合。

我想添加一个以a Function作为参数的map方法来生成一个新数组。除非请求特定值,否则我不希望评估这些功能。这是很简单的事情,因为lambdas是惰性评估的。但是,我也只希望函数只被评估一次,即使多次请求结果也是如此。

我可以创建一个存储供应商的节点,并在评估时更新结果:

class Node<T> {

    private T value;
    private Supplier<T> supplier;

    public T get() {
        if (null != value)
            return value;
        value = supplier.get();
        return value;
    }
}
Run Code Online (Sandbox Code Playgroud)

... where supplier是从Function应用于持久化数组旧版本中的值得出的。

但是,这不再是一种功能性方法,并且有可能在多线程系统中引起错误*。在供应商返回空值**的情况下,这也不会产生任何优势。

另一种方法是Node在get调用中返回的实例:

class Node<T> {

    private final Optional<T> value;
    private final Supplier<T> supplier;

    Node(Supplier<T> supplier, T value) {
        this.supplier = supplier;
        this.value = Optional.ofNullable(value);
    }

    public Tuple<Node<T>, T> get() {
        if (null != value)
            return new Tuple<>(this, value.orElse(null));
        T result = …
Run Code Online (Sandbox Code Playgroud)

lambda java-8

5
推荐指数
1
解决办法
528
查看次数

F#:不理解匹配..用

我正在搞乱F#和Fable,并试图测试我的理解.为此,我尝试创建一个函数来计算给定一定次数的迭代次数.我想出的是

let eCalc n =
      let rec internalECalc ifact sum count =
          match count = n with
          | true -> sum
          | _ -> internalECalc (ifact / (float count)) (sum + ifact) (count+1)

      internalECalc 1.0 0.0 1
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,调用后返回2.7182818284590455

eCalc 20
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用,我认为是更正确的形式

let eCalc n =
      let rec internalECalc ifact sum count =
          match count with
          | n -> sum
          | _ -> internalECalc (ifact / (float count)) (sum + ifact) (count+1)

      internalECalc 1.0 0.0 1
Run Code Online (Sandbox Code Playgroud)

我收到警告"[警告]此规则永远不会匹配(L5,10-L5,11)",返回值为0.(如果我在匹配中交换'n'和'count',也会发生同样的事情声明).有没有理由我不能在比赛声明中使用'n'?有没有办法解决这个问题,所以我可以使用'n'?

谢谢

f#

2
推荐指数
1
解决办法
130
查看次数

kubectl 返回“无法连接到服务器:x509:证书对于...有效”

我在远程计算机(k8_host)上启动了一个 minikube 实例。我正在尝试从本地计算机(client_comp)连接到它。我按照此处给出的指示进行设置并移动证书。

看来我可以在 client_comp 上成功使用 kubectl 执行 ping 操作,但收到证书错误:

    $ kubectl get pods
    Unable to connect to the server: x509: certificate is valid for 192.168.49.2, 10.96.0.1, 127.0.0.1, 10.0.0.1, not 192.168.1.69
Run Code Online (Sandbox Code Playgroud)

当我检查 minikube 的 IP 设置时,我得到

$minikube ip
192.168.49.2
Run Code Online (Sandbox Code Playgroud)

k8_host的ip是192.168.1.69。

如果我理解正确的话,似乎当 minikube 启动时,它会自动生成一组证书,这需要一个域。因此,它使用 k8_host 上的 minikube 本地 IP (192.168.49.2) 创建了证书。而且,当我尝试从 client_comp 进行连接时,它将主机设置为 k8_host 的网络 IP (192.168.1.69)。

我需要更新证书吗?我猜测,由于 nginx 设置为仅传递 ssl 证书(使用流),所以我不能只在 nginx 配置中添加正确的主机。

作为将来的参考,我在 minikube 设置过程中是否做错了什么?

以供参考:

~/.kube/config(在 client_comp 上)

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: [redacted]
    server: …
Run Code Online (Sandbox Code Playgroud)

kubectl minikube

2
推荐指数
1
解决办法
6413
查看次数

标签 统计

java-8 ×2

lambda ×2

f# ×1

java ×1

kubectl ×1

minikube ×1