PHP8 —— New String Helpers

新增了三个字符串函数,str_starts_with, str_ends_with, str_contains, PHP 的函数这么方便,很难想象竟然一直没有这几个。 str_starts_with 判断字符串是否以另一个字符串开头,在PHP7以及之前 $id = 'inv_abcdefgh'; $result = strpos($id, 'inv_') === 0; var_dump($result); // true PHP8 中可以直接这么写 $result = str_starts_with($id, 'inv_'); str_ends_with 判断字符串是否以另外一个字符串结尾,在 PHP7 及之前,比较麻烦,通常是这么写 $id = 'abcd_inv'; $result = strpos(strrev($id), strrev('_inv')) === 0; 或者 $result = substr($id, -1 * strlen('_inv')) === '_inv'; 或者上正则吧 $result = preg_match('/_inv$/', $id) === 1; 看起来都是比较麻烦的。PHP8 里面可以简化成下面这样了 $id = 'abcd_inv'; $result = str_ends_with($id, '_ind'); str_contains 字符串包含,PHP8 之前一般就是 strpos 来实现了 $url = 'https://example?for=bar'; $result = strpos($url, '?') !== FALSE; PHP8 就直接一点 $result = str_contains($url, '?');

Java 学习笔记 —— 在Java 8 中创建 Optional

像Java 8 API中的许多其他新类一样,Optional的实例是不可变的。 Optional是基于值的类,其实例有如下特性:

  • 是final且不可变的(可能包含对可变对象的引用)
  • 没有公共构造函数,因此必须通过工厂方法实例化
  • 具有equals,hashCode和toString的实现,这些实现仅基于其状态

创建 Optional 的静态工厂方法为 emptyofofNullable,其签名为:

static <T> Optional<T> empty()
static <T> Optional<T> of(T value)
static <T> Optional<T> ofNullable(T value)

empty会返回一个空的Optional。 of 方法返回一个包装指定值的Optional,如果参数为null则引发异常。

public static <T> Optional<T> createOptionalTheHardWay(T value) { 
    return value == null ? Optional.empty() : Optional.of(value);
}

上面是一种复杂写法,简单点可以使用ofNullable 方法,如下:

public static <T> Optional<T> createOptionalTheEasyWay(T value) { 
    return Optional.ofNullable(value);
}

实际上,Java 8 中ofNullable实现逻辑就是: 检查所包含的值是否为null,是则返回空的Optional,不是则使用Optional.of对其进行包装。
顺便说一下,类OptionalInt,OptionalLong和OptionalDouble包装了不会为null的primitives,所以他们只有一个 of 方法。

static OptionalInt of(int value) 
static OptionalLong of(longvalue) 
static OptionalDouble of(double value)

这些类的getter方法不是get,而是getAsIntgetAsLonggetAsDouble

评论

此博客中的热门博文

D3js Data-binding basics

JavaScript 数据类型

Vue3新特性(1) —— Vite