在具有可选类型的语言中,您可以使用一个称为orElse或的fn来getOrElse执行此操作:
None.getOrElse(1) == 1
Some(2).getOrElse(1) == 2
Run Code Online (Sandbox Code Playgroud)
即您可以指定一个默认值。在Python中,我发现自己正在编写:
if output_directory:
path = output_directory
else:
path = '.'
Run Code Online (Sandbox Code Playgroud)
getOrElse通话会更干净。搜索orElse和getOrElse会出现逻辑运算符。有合适的Python fn吗?
编辑:getOrElse与三元运算符调用不同,因为这需要您output_directory 两次引用。如果将其替换为复杂的表达式,这将是一个特殊的问题。(在功能样式上非常正常。)
小智 5
请注意,getOrElse在bool(x) == False. 例如
Some(0).getOrElse(1) == 0
Some('').getOrElse('A') == ''
Run Code Online (Sandbox Code Playgroud)
但对于以下两个定义中的任何一个
def getOrElse1(x, y):
return x or y
def getOrElse2(x, y):
return x if x else y
Run Code Online (Sandbox Code Playgroud)
我们有
getOrElse(x=0, 1) == 1
getOrElse(x='', 'A') == 'A'
Run Code Online (Sandbox Code Playgroud)
定义给出了等效的语义:
getOrElse(x=0, 1) == 1
getOrElse(x='', 'A') == 'A'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1070 次 |
| 最近记录: |