小编sev*_*een的帖子

关于lambda语法

我正在检查JDK 8 API和内部Function接口我注意到身份功能

static <T> Function<T, T> identity() {
    return t -> t;
}
Run Code Online (Sandbox Code Playgroud)

这解决方法:

R apply(T t);
Run Code Online (Sandbox Code Playgroud)

在同一个Function界面声明.

问题是t -> t部分有效的原因.

如果我们根据熟悉的匿名内部类扩展这个表达式

new Function<String, String>() {

    @Override
    String apply(String t) {
         t; // Oops, compilation error
    }
}
Run Code Online (Sandbox Code Playgroud)

t -> t一种捷径t -> { return t; }吗?

java lambda java-8

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

为什么 Convert.ToInt32 接受 IFormatProvider?

对我来说,在 Convert 类中进行以下重载是有意义的

public static double ToDouble(string value, IFormatProvider provider);
Run Code Online (Sandbox Code Playgroud)

例子:

Console.WriteLine(Convert.ToDouble("3223.2", CultureInfo.InvariantCulture)); // success
Console.WriteLine(Convert.ToDouble("3223,2", new CultureInfo("fr-FR"))); // success
Console.WriteLine(Convert.ToDouble("3223.2", new CultureInfo("fr-FR"))); // failure
Run Code Online (Sandbox Code Playgroud)

但是使用以下重载的示例是什么?

public static int ToInt32(string value, IFormatProvider provider);
Run Code Online (Sandbox Code Playgroud)

下面一切都失败了:

Console.WriteLine(Convert.ToInt32("3223.2", CultureInfo.InvariantCulture));
Console.WriteLine(Convert.ToInt32("3223,2", new CultureInfo("fr-FR")));
Console.WriteLine(Convert.ToInt32("3223.2", new CultureInfo("fr-FR")));
Run Code Online (Sandbox Code Playgroud)

换句话说,是否存在任何有效的整数字符串表示形式(在任何区域性中),如果不指定 IFormatProvider 就无法将其转换为 int?

.net cultureinfo number-formatting

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

标签 统计

.net ×1

cultureinfo ×1

java ×1

java-8 ×1

lambda ×1

number-formatting ×1