gpt4 book ai didi

switch-statement - Cond和Case有什么区别?

转载 作者:行者123 更新时间:2023-12-03 09:00:37 26 4
gpt4 key购买 nike

在Elixir编程语言中,
有两种类似的构造condcase
两者都类似于其他语言的switchselect语句

this page上同时描述了condcase

最佳答案

让我也将if放入俱乐部。您可以使用带有一个条件的if和一个可能的else,就是这样。当您有多个条件并且cond语句不够用时,可以使用if语句,最后,当您要对某些数据进行模式匹配时,将使用case语句。

让我们通过示例进行解释:假设您想在今天下雨的时候吃苹果,或者如果不是的话则吃米饭,那么您可以使用:

if weather == :raining do
IO.puts "I'm eating apple"
else
IO.puts "I'm eating rice"
end

这是一个有限的世界,因此您想扩展您的选择,因此在某些情况下您会吃到其他东西,因此 cond语句就是为此而设计的,如下所示:
cond do
weather == :raining and not is_weekend ->
IO.puts "I'm eating apple"
weather == :raining and is_weekend ->
IO.puts "I'm will eat 2 apples!"
weather == :sunny ->
IO.puts "I'm happy!"
weather != :raining and is_sunday ->
IO.puts "I'm eating rice"
true ->
IO.puts "I don't know what I'll eat"
end

最后一个 true应该在那儿,否则会引发异常。

那么 case呢?它用于对某些事物进行模式匹配。假设您在元组中以消息的形式接收到有关天气和星期几的信息,并且您依靠它来做出决定,则可以这样写:
case { weather, weekday } do
{ :raining, :weekend } ->
IO.puts "I'm will eat 2 apples!"

{ :raining, _ } ->
IO.puts "I'm eating apple"

{ :sunny, _ } ->
IO.puts "I'm happy!"

{ _, :sunday } ->
IO.puts "I'm eating rice"

{ _, _ } ->
IO.puts "I don't know what I'll eat"
end

因此, case带给您数据的模式匹配方法,这是 ifcond所没有的。

关于switch-statement - Cond和Case有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21075026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com