if 作为表达式和 if 作为语句之间的区别
Difference between if as an expression and if as a statement
所以我在看这个关于 Go 语言的视频 - https://www.youtube.com/watch?v=p9VUCp98ay4 ,在大约 6:50 时,一个人问了一个问题,为什么他们将 if 作为语句而不是表达式来实现。这两个实现有什么区别?据我所知,我从来不需要根据语言改变使用条件语句的方式。
编辑:他的问题中 "you need values rather than variables" 是什么意思?
表达式和语句的区别在于表达式产生一个值,因此可以用在需要值的地方。所以表达式可以用作变量的值、函数的参数或运算符的操作数。语句不能。
and what does he mean that "you need values rather than variables" in his question?
我假设他所说的 vals 是指常量(例如在 Scala 中称为 val
s)。
如果 if
是一个表达式,你可以这样做:
const myValue = if condition { value1 } else { value2 }
因为 if
不是一个表达式,你必须这样做:
var myValue
if condition {
myValue = value1
} else {
myValue = value2
}
所以你需要让你的变量可变(使用 var
而不是 const
),这可能就是提问者的意思。
通过使用即时调用函数 (IIF) 结合 GO 中的 if 语句,您可以获得与 if 表达式相同的代码优雅。我不是 GO 程序员(主要是打字稿)所以如果这对性能有任何影响请告诉我。
func main() {
amIHungry := true
didMyPaycheckComeInYet := false
choice := func() string {
if(!amIHungry && !didMyPaycheckComeInYet){
return "stay-home"
}
if(!amIHungry && didMyPaycheckComeInYet){
return "buy-new-keyboard"
}
if(amIHungry && !didMyPaycheckComeInYet){
return "make-ramen"
}
return "taco-bell-time"
}()
println(choice)
}
稍后在您的程序中,您可以有一个简化的“选择”来选择您的应用程序逻辑,而不是一堆脱离上下文的状态。
if(choice == "taco-bell-time"){
println("Order a bean burrito, but with black beans,")
}
比
更容易推理
if(amIHungry && didMyPaycheckComeInYet){
println("Order a bean burrito, but with black beans,")
}
所以我在看这个关于 Go 语言的视频 - https://www.youtube.com/watch?v=p9VUCp98ay4 ,在大约 6:50 时,一个人问了一个问题,为什么他们将 if 作为语句而不是表达式来实现。这两个实现有什么区别?据我所知,我从来不需要根据语言改变使用条件语句的方式。
编辑:他的问题中 "you need values rather than variables" 是什么意思?
表达式和语句的区别在于表达式产生一个值,因此可以用在需要值的地方。所以表达式可以用作变量的值、函数的参数或运算符的操作数。语句不能。
and what does he mean that "you need values rather than variables" in his question?
我假设他所说的 vals 是指常量(例如在 Scala 中称为 val
s)。
如果 if
是一个表达式,你可以这样做:
const myValue = if condition { value1 } else { value2 }
因为 if
不是一个表达式,你必须这样做:
var myValue
if condition {
myValue = value1
} else {
myValue = value2
}
所以你需要让你的变量可变(使用 var
而不是 const
),这可能就是提问者的意思。
通过使用即时调用函数 (IIF) 结合 GO 中的 if 语句,您可以获得与 if 表达式相同的代码优雅。我不是 GO 程序员(主要是打字稿)所以如果这对性能有任何影响请告诉我。
func main() {
amIHungry := true
didMyPaycheckComeInYet := false
choice := func() string {
if(!amIHungry && !didMyPaycheckComeInYet){
return "stay-home"
}
if(!amIHungry && didMyPaycheckComeInYet){
return "buy-new-keyboard"
}
if(amIHungry && !didMyPaycheckComeInYet){
return "make-ramen"
}
return "taco-bell-time"
}()
println(choice)
}
稍后在您的程序中,您可以有一个简化的“选择”来选择您的应用程序逻辑,而不是一堆脱离上下文的状态。
if(choice == "taco-bell-time"){
println("Order a bean burrito, but with black beans,")
}
比
更容易推理if(amIHungry && didMyPaycheckComeInYet){
println("Order a bean burrito, but with black beans,")
}