在array.each中,如何用长尾替代if else条件判断?

2026-04-10 06:531阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1120个文字,预计阅读时间需要5分钟。

在array.each中,如何用长尾替代if else条件判断?

这里是一个Ruby的新手。我在数组中放了一个if else语句,如果某个数字等于0,就发送一个字符串。对于我的生活,我无法在任何地方找到它。我相信有人会发现它非常简单。+a=*(1..100)a.each { |i| puts t }

这里是 Ruby的新手.我试图在数组中放一个if else语句,如果某个模数== 0,发送一个字符串,对于我的生活,我无法在任何地方找到它.我相信有人会发现它非常简单.

a = *(1..100) a.each { |i| puts "three" if i % 3 == 0 elsif puts "five" if i % 5 == 0 else puts i}

只是不确定正确的语法.仍然是ruby的新手,我正在尝试学习语法.上学期上了C课,我的大脑一直想要用C语法.

当我离开时

a = *(1..100) a.each { |i| puts "three" if i % 3 == 0}

它工作正常,只是想弄清楚如何添加if else.感谢帮助.

以下答案非常有用.我试图进一步将其称为函数.它一直返回5,而不是“五”,或3,而不是“三”.

这是我的功能:

def array_mod a = *(1..100) a.each { |i| if i % 3 == 0 && i % 5 == 0; i = "fifteen" elsif i % 3 == 0; i = "three" elsif i % 5 == 0; i = "five" else i = i end }

结束

这是我试图称呼它.

require "minitest/autorun" require_relative "array_modulus.rb" class TestArrayFunction < Minitest::Test def test_array1 results = array_mod assert_equal(100, results.length) end def test_array2 results = array_mod assert_equal("three", results[2]) end end

我被告知它没有更新我的阵列.再次感谢.

Ruby中条件表达式的语法是:

if c_1 then e_1 elsif c_2 then e_2 elsif c_3 then e_3 … elsif c_n then e_n else e_nplus1 end

其中c_1 … c_n和e_1 … e_nplus1可以是任意Ruby表达式.

可以使用表达式分隔符(即;或换行符)而不是then关键字来分隔条件表达式的各个部分.

用分号(这种用法是非惯用的):

if c_1; e_1 elsif c_2; e_2 elsif c_3; e_3 … elsif c_n; e_n else e_nplus1 end

换行:

if c_1 e_1 elsif c_2 e_2 elsif c_3 e_3 # … elsif c_n e_n else e_nplus1 end

如果您使用换行符,您也可以选择使用then关键字,但这也是非惯用的:

if c_1 then e_1 elsif c_2 then e_2 elsif c_3 then e_3 # … elsif c_n then e_n else e_nplus1 end

因此,在您的情况下,正确的语法将是:

# idiomatic a.each { |i| if i % 3 == 0 then puts "three" elsif i % 5 == 0 then puts "five" else puts i end } # non-idiomatic a.each { |i| if i % 3 == 0; puts "three" elsif i % 5 == 0; puts "five" else puts i end } # idiomatic a.each { |i| if i % 3 == 0 puts "three" elsif i % 5 == 0 puts "five" else puts i end } # non-idiomatic a.each { |i| if i % 3 == 0 then puts "three" elsif i % 5 == 0 then puts "five" else puts i end }

但是,对于if / elsif这样的链,使用case表达式通常更惯用:

# idiomatic case when c_1 then e_1 when c_2 then e_2 when c_3 then e_3 … when c_n then e_n else e_nplus1 end # non-idiomatic case when c_1; e_1 when c_2; e_2 when c_3; e_3 … when c_n; e_n else e_nplus1 end # idiomatic case when c_1 e_1 when c_2 e_2 when c_3 e_3 # … when c_n e_n else e_nplus1 end # non-idiomatic case when c_1 then e_1 when c_2 then e_2 when c_3 then e_3 # … when c_n then e_n else e_nplus1 end

在您的情况下,这将是这样的:

# idiomatic a.each { |i| case when i % 3 == 0 then puts "three" when i % 5 == 0 then puts "five" else puts i end } # non-idiomatic a.each { |i| case when i % 3 == 0; puts "three" when i % 5 == 0; puts "five" else puts i end } # idiomatic a.each { |i| case when i % 3 == 0 puts "three" when i % 5 == 0 puts "five" else puts i end } # non-idiomatic a.each { |i| case when i % 3 == 0 then puts "three" when i % 5 == 0 then puts "five" else puts i end }

请注意,条件表达式(if和case)都是表达式,而不是语句. Ruby中没有语句,一切都是表达式,一切都评估为一个值.条件表达式求值为已采用的分支中的表达式的值.

所以,你也可以像这样写:

# idiomatic a.each { |i| puts(if i % 3 == 0 then "three" elsif i % 5 == 0 then "five" else i end) } # non-idiomatic a.each { |i| puts(if i % 3 == 0; "three" elsif i % 5 == 0; "five" else i end) } # idiomatic a.each { |i| puts(if i % 3 == 0 "three" elsif i % 5 == 0 "five" else i end) } # non-idiomatic a.each { |i| puts(if i % 3 == 0 then "three" elsif i % 5 == 0 then "five" else i end) } # idiomatic a.each { |i| puts(case when i % 3 == 0 then "three" when i % 5 == 0 then "five" else i end) } # non-idiomatic a.each { |i| puts(case when i % 3 == 0; "three" when i % 5 == 0; "five" else i end) } # idiomatic a.each { |i| puts(case when i % 3 == 0 "three" when i % 5 == 0 "five" else i end) } # non-idiomatic a.each { |i| puts(case when i % 3 == 0 then "three" when i % 5 == 0 then "five" else i end) }

在array.each中,如何用长尾替代if else条件判断?
标签:Rubyelse

本文共计1120个文字,预计阅读时间需要5分钟。

在array.each中,如何用长尾替代if else条件判断?

这里是一个Ruby的新手。我在数组中放了一个if else语句,如果某个数字等于0,就发送一个字符串。对于我的生活,我无法在任何地方找到它。我相信有人会发现它非常简单。+a=*(1..100)a.each { |i| puts t }

这里是 Ruby的新手.我试图在数组中放一个if else语句,如果某个模数== 0,发送一个字符串,对于我的生活,我无法在任何地方找到它.我相信有人会发现它非常简单.

a = *(1..100) a.each { |i| puts "three" if i % 3 == 0 elsif puts "five" if i % 5 == 0 else puts i}

只是不确定正确的语法.仍然是ruby的新手,我正在尝试学习语法.上学期上了C课,我的大脑一直想要用C语法.

当我离开时

a = *(1..100) a.each { |i| puts "three" if i % 3 == 0}

它工作正常,只是想弄清楚如何添加if else.感谢帮助.

以下答案非常有用.我试图进一步将其称为函数.它一直返回5,而不是“五”,或3,而不是“三”.

这是我的功能:

def array_mod a = *(1..100) a.each { |i| if i % 3 == 0 && i % 5 == 0; i = "fifteen" elsif i % 3 == 0; i = "three" elsif i % 5 == 0; i = "five" else i = i end }

结束

这是我试图称呼它.

require "minitest/autorun" require_relative "array_modulus.rb" class TestArrayFunction < Minitest::Test def test_array1 results = array_mod assert_equal(100, results.length) end def test_array2 results = array_mod assert_equal("three", results[2]) end end

我被告知它没有更新我的阵列.再次感谢.

Ruby中条件表达式的语法是:

if c_1 then e_1 elsif c_2 then e_2 elsif c_3 then e_3 … elsif c_n then e_n else e_nplus1 end

其中c_1 … c_n和e_1 … e_nplus1可以是任意Ruby表达式.

可以使用表达式分隔符(即;或换行符)而不是then关键字来分隔条件表达式的各个部分.

用分号(这种用法是非惯用的):

if c_1; e_1 elsif c_2; e_2 elsif c_3; e_3 … elsif c_n; e_n else e_nplus1 end

换行:

if c_1 e_1 elsif c_2 e_2 elsif c_3 e_3 # … elsif c_n e_n else e_nplus1 end

如果您使用换行符,您也可以选择使用then关键字,但这也是非惯用的:

if c_1 then e_1 elsif c_2 then e_2 elsif c_3 then e_3 # … elsif c_n then e_n else e_nplus1 end

因此,在您的情况下,正确的语法将是:

# idiomatic a.each { |i| if i % 3 == 0 then puts "three" elsif i % 5 == 0 then puts "five" else puts i end } # non-idiomatic a.each { |i| if i % 3 == 0; puts "three" elsif i % 5 == 0; puts "five" else puts i end } # idiomatic a.each { |i| if i % 3 == 0 puts "three" elsif i % 5 == 0 puts "five" else puts i end } # non-idiomatic a.each { |i| if i % 3 == 0 then puts "three" elsif i % 5 == 0 then puts "five" else puts i end }

但是,对于if / elsif这样的链,使用case表达式通常更惯用:

# idiomatic case when c_1 then e_1 when c_2 then e_2 when c_3 then e_3 … when c_n then e_n else e_nplus1 end # non-idiomatic case when c_1; e_1 when c_2; e_2 when c_3; e_3 … when c_n; e_n else e_nplus1 end # idiomatic case when c_1 e_1 when c_2 e_2 when c_3 e_3 # … when c_n e_n else e_nplus1 end # non-idiomatic case when c_1 then e_1 when c_2 then e_2 when c_3 then e_3 # … when c_n then e_n else e_nplus1 end

在您的情况下,这将是这样的:

# idiomatic a.each { |i| case when i % 3 == 0 then puts "three" when i % 5 == 0 then puts "five" else puts i end } # non-idiomatic a.each { |i| case when i % 3 == 0; puts "three" when i % 5 == 0; puts "five" else puts i end } # idiomatic a.each { |i| case when i % 3 == 0 puts "three" when i % 5 == 0 puts "five" else puts i end } # non-idiomatic a.each { |i| case when i % 3 == 0 then puts "three" when i % 5 == 0 then puts "five" else puts i end }

请注意,条件表达式(if和case)都是表达式,而不是语句. Ruby中没有语句,一切都是表达式,一切都评估为一个值.条件表达式求值为已采用的分支中的表达式的值.

所以,你也可以像这样写:

# idiomatic a.each { |i| puts(if i % 3 == 0 then "three" elsif i % 5 == 0 then "five" else i end) } # non-idiomatic a.each { |i| puts(if i % 3 == 0; "three" elsif i % 5 == 0; "five" else i end) } # idiomatic a.each { |i| puts(if i % 3 == 0 "three" elsif i % 5 == 0 "five" else i end) } # non-idiomatic a.each { |i| puts(if i % 3 == 0 then "three" elsif i % 5 == 0 then "five" else i end) } # idiomatic a.each { |i| puts(case when i % 3 == 0 then "three" when i % 5 == 0 then "five" else i end) } # non-idiomatic a.each { |i| puts(case when i % 3 == 0; "three" when i % 5 == 0; "five" else i end) } # idiomatic a.each { |i| puts(case when i % 3 == 0 "three" when i % 5 == 0 "five" else i end) } # non-idiomatic a.each { |i| puts(case when i % 3 == 0 then "three" when i % 5 == 0 then "five" else i end) }

在array.each中,如何用长尾替代if else条件判断?
标签:Rubyelse