使用java8我们知道使用ZoneId.default()可以获得系统默认值ZoneId,但如何获取默认值ZoneOffset?
我看到一个ZoneId有一些"规则",每个规则都有一个ZoneOffset,这意味着一个ZoneId可能有一个以上ZoneOffset吗?
有什么区别:
fun <T, R> List<T>.map1(transform: (T) -> R): List<R> {
return this.map(transform)
}
Run Code Online (Sandbox Code Playgroud)
和
fun <T, R> List<T>.map2(transform: (T?) -> R): List<R> {
return this.map(transform)
}
Run Code Online (Sandbox Code Playgroud)
和
fun <T, R> List<T?>.map3(transform: (T?) -> R): List<R> {
return this.map(transform)
}
Run Code Online (Sandbox Code Playgroud)
在我的测试中,null被接受了上述所有3个变换功能,所以:有什么区别T和T??
例如:
fun f(func: () -> Any?)
Run Code Online (Sandbox Code Playgroud)
参数func表示返回Any的函数?类型.但是如何使func可以为空呢:
fun f( (func: () -> Any?)? )
Run Code Online (Sandbox Code Playgroud) 考虑这个非扩展函数:
fun checkArguments(expression: Boolean) {
if (!expression) {
throw IllegalArgumentException()
}
}
Run Code Online (Sandbox Code Playgroud)
当我在kotlin和java中使用这个函数时,我可以看到它的参数名称:expression。
我还可以将相同的功能编写为扩展函数:
fun Boolean.checkArguments() {
if (!this) {
throw IllegalArgumentException()
}
}
Run Code Online (Sandbox Code Playgroud)
当我以这种方式将其编写为扩展函数时,调用它的布尔值的参数名称(this函数内的变量,又称接收器)显示为$this$checkArguments。如何为此参数添加 KDoc 文档注释?使用@param $this$checkArguments似乎没有记录它。
例如:
fun test() {
val s: String? = ""
check(s != null)
// Error: Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?
s.subSequence(0, 1)
}
inline fun check(expression: Boolean) {
if (!expression) {
throw IllegalArgumentException()
}
}
Run Code Online (Sandbox Code Playgroud)
该check功能inline,所以它是一样的:
fun test() {
val s: String? = ""
//check(s != null)
if (!(s != null)) {
throw IllegalArgumentException()
}
// It worked!
s.subSequence(0, 1)
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,即使使用contract,!= null也可以,但是 …
不使用file.list()或Files.list(path),如何计算目录中的文件编号?
我只想要一个数字,没有细节。请给我一个快速的方法。