/

None

None 是一个特殊值,表示空无或缺失(类似于许多编程语言中的 null)。函数可以返回它,它也可以作为可选参数的占位符。

操作

函数说明返回类型
.none创建一个空值。none
.isnone {value}检查 value 是否为 noneBoolean
.otherwise {value} {fallback}如果 value 不是 none,则返回 value,否则返回 fallback。与函数调用链配合使用效果最佳。valuefallback 的类型
.ifpresent {value} {lambda}如果 value 不是 none,则根据 lambda 将其映射为一个新值;如果是 none,则返回 none。与函数调用链配合使用效果最佳。lambda 返回的类型,或 none
.takeif {value} {lambda}如果返回布尔值的 lambdavalue 上被接受,则返回 value,否则返回 none。与函数调用链配合使用效果最佳。value 的类型,或 none

将 None 传递给函数

标准库中以 Kotlin 编写的原生函数,通常接受可空参数。当这样的参数被传入 None 时,函数会将其视为 null,这通常意味着该参数被视为缺失。

当你将一个值存储在一个可能为 None 也可能不是的变量中,并且希望不经过检查就将其转发给某个函数时,这一点特别有用。

示例 1

.function {highlight} 
    color?:
    .container background:{.color}
        Value of color: .color

1. .highlight {teal}
2. .highlight
  1. Value of color: teal

  2. Value of color: None

操作示例

示例 2

Hi! I'm .name::otherwise {unnamed}
  • 如果 nameJohnHi! I’m John
  • 如果它是 noneHi! I’m unnamed

示例 3

.num::takeif {x: .x::equals {5}}
  • 如果 num 是 5:5
  • 否则:None

好奇 x: 语法?它声明了一个带参数的行内 Lambda。请查看其页面了解更多详情。

示例 4

.num::takeif {x: .x::iseven}::ifpresent {Even}::otherwise {Odd}
  • 如果 num 是偶数:Even
  • 否则:Odd

示例 5

.x::ifpresent {Yes, .1 is present}::otherwise {Not present}
  • 如果 xsomethingYes, something is present
  • 如果它是 noneNot present

此处,lambda 参数是隐式的,并通过位置来访问。