每个语句中的三元运算符都不在Ruby中工作?

时间:2013-05-24 14:08:05

标签: ruby ternary-operator

我想知道这是一个语法问题还是三元运算符在每个语句中都不起作用?

下面是代码(代码在第二行

def no_repeats(year_start, year_end)
    (year_start..year_end).each {|x| no_repeats?(x) ? puts x: puts "nil"}
end




def no_repeats?(year)
    splitted_year = year.to_s.split("")
    counter=[]
    splitted_year.each {|x| counter << x unless counter.include?(x)}
    if counter.count == 4
        return true
    else 
        return false
    end
end


no_repeats(1980,1985)

以下代码解决了这个问题

(year_start..year_end).each {|x| no_repeats?(x) ? puts(x) : puts("nil") }

1 个答案:

答案 0 :(得分:1)

是的,这是语法问题。在冒号前放置空格并用括号括起puts的参数(以消除歧义)。

(year_start..year_end).each {|x| no_repeats?(x) ? puts(x) : puts("nil") }