gpt4 book ai didi

ruby - elsif 部分为空

转载 作者:数据小太阳 更新时间:2023-10-29 08:27:56 24 4
gpt4 key购买 nike

如果表达式为空,你能解释一下在“elsif”中什么表达式使用 ruby​​ 吗?

arg = 3
if (arg == 1)
puts "1"
elsif (arg == 2)
puts "2"
elsif
puts "3"
end

p (1...10).map { |i|
if (i == 1)
1
elsif (i == 2)
2
elsif
3
end
}

脚本输出:

3
[1, 2, nil, nil, nil, nil, nil, nil, nil]

最佳答案

基本上还有很多话要说:

if-else 分支中,每当找到任何匹配条件时,if-else block 将返回匹配子句的最后一条语句。考虑以下因素:

arg = 4
p m = if (arg == 1)
"1"
elsif (arg == 3)
"3"
elsif (arg ==4)
"5";"11"
elsif
"3"
end

输出:

#11

但是在与每个子句匹配的过程中,如果找到任何裸 elsif,则 if-else block 检查其直接表达式的真值并相应地返回值:

arg = "4"
p m = if (arg == "1")
47
elsif
10 ; "7"
elsif (arg =="5")
12;14
elsif
2
end

输出:

#"7"

下面的代码将返回 nil,因为 10 被用作条件检查,之后没有任何内容返回。所以返回了 nil

arg = "4"
p m = if (arg == "1")
47
elsif
10
elsif (arg =="5")
12;14
elsif
2
end #nil

下面的另一个代码让事情最终变得清晰:

arg = "4"
p m = if (arg == "1")
47
elsif
nil
elsif (arg =="5")
12;14
elsif
2 ; "44"
end #44

以上所有示例,我希望原因很清楚 - 下面的代码输出:[1, 2, nil, nil, nil, nil, nil, nil, nil]

p (1...10).map { |i|
if (i == 1)
1
elsif (i == 2)
2
elsif
3
end
}

要回答您的第一个代码,请先查看以下两个代码:

m = if puts "hi"
p "hello"
end #"hi"

"hi"打印为 puts 返回 nil,其中 if 子句评估为 false 因此 hello 未打印。但是下面的代码确实是因为 p 在那里使用并且 if 子句在 p 返回值上执行,该返回值是 true.

m = if p "hi"
p "hello"
end

#"hi"
#"hello"

现在希望你理解为什么 3 是下面代码的输出,从上面所有的逻辑作为一个整体应用:

arg = 3
if (arg == 1)
puts "1"
elsif (arg == 2)
puts "2"
elsif
puts "3"
end

关于ruby - elsif 部分为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15815316/

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